Oracle ORA-00900无效语句
我收到存储过程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
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;