Oracle ORA-00900无效语句

Oracle ORA-00900无效语句,oracle,plsql,Oracle,Plsql,我收到存储过程ORA-00900错误的调用。我的代码是: 电话: execute pkg_titularitalia.insertar(1,12,'123','123', 123, null); 储存程序: PROCEDURE Insertar(pIdUsuarioSeg IN number, pIdTitular IN OUT number, pPartitaIV

我收到存储过程ORA-00900错误的调用。我的代码是:

电话:

execute pkg_titularitalia.insertar(1,12,'123','123', 123, null);
储存程序:

 PROCEDURE Insertar(pIdUsuarioSeg           IN number,
                     pIdTitular             IN OUT number,
                     pPartitaIVA            IN OUT varchar,
                     pCodigoIS              IN OUT varchar,
                     pIdUsuarioModificacion IN OUT number,
                     pFechamodificacion     IN OUT date) AS
  BEGIN
    DBMS_OUTPUT.PUT_LINE('aa');
  END;
如果我在控制台中进行测试,我会在DBMS控制台中看到结果,但当我在代码中执行时,会出现错误ORA-00900 invalid STATT

怎么了

我把电话换了

declare 
  a number := 5643;
  b varchar := '123';
  c varchar := '';
  d number := 5643;
  e date;
begin
  -- Call the procedure
  execute insertar(1, a, b, c, d, e);
end;
正如大家所建议的,她给了我ORA-06550

====================================================================================

解决方案(我知道了)
006550在begin/end块的declare部分给了我varchar的长度

execute
是一个SQL/Plus命令。要从另一个应用程序运行过程,只需将调用包装在PL/SQL块中:

begin
  pkg_titularitalia.insertar(1,12,'123','123', 123, null);
end;

对不起,我直接抄了。我知道。正如Frank Schmitt在回答中所说,我设置了begin end block,但我得到的是ORA-06550。您还将遇到
oar-00363
错误,因为您的过程的大多数实际参数都是在
in out
模式下声明的,并试图传入文本。文字不能用作赋值目标,只能用作变量。现在错误消息中的行号和列号是多少?我用你们所有人告诉我的编辑答案,我没有改变存储过程,但是我改变了调用的方式,但是它给了我ORA-06550谢谢,这是我的一个大问题,我使用sql server和oracle,有时会让人困惑。thx,是frank,我再次编辑了问题,我设置了你提到的内容,但它给出了ORA-6550 OK frank,我得到了解决方案,当我声明参数时,我必须设置varchar的长度,我将用正确的解决方案重新编辑topo
begin
  pkg_titularitalia.insertar(1,12,'123','123', 123, null);
end;