调用SQL过程:SQL异常 - 代码:6550 ORA-06550

时间:2012-03-30 09:45:14

标签: java sql jdbc oracle10g

尝试致电SQL程序:

PROCEDURE Incident_inqr
(MSISDN IN VARCHAR2
, Topic IN varchar2
,Incident_id IN varchar2 default '20120401' 
, RESULT OUT number
);

java JDBC string:

SQL command: begin ? := SMASTER.SERVICE.Incident_inqr ( '9308000050','6345_NN','20120401', ?); end;

错误(我用俄语得到):

  

SQL异常 - 代码:6550 ORA-06550:Строка1,столбец13:PLS-00222:   функциясименем'INCIDENT_INQR'несуществуетвэтойобластидействия   ORA-06550:Строка1,столбец7:PL / SQL:语句被忽略

翻译:

  

SQL异常 - 代码:6550 ORA-06550:第1行,第13列:PLS-00222:   此操作区域中不存在名为“INCIDENT_INQR”的函数   ORA-06550:第1行第7列:PL / SQL:忽略语句

输出?注册:

cs.registerOutParameter(1, oracle.jdbc.driver.OracleTypes.VARCHAR);
cs.registerOutParameter(2, oracle.jdbc.driver.OracleTypes.NUMBER);

2 个答案:

答案 0 :(得分:2)

Incident_inqr是一个程序。所以它没有返回值,只有out参数。

这样称呼它的正确方法是:

begin SMASTER.SERVICE.Incident_inqr ( '9308000050','6345_NN','20120401', ?); end;

...

cs.registerOutParameter(1, oracle.jdbc.driver.OracleTypes.NUMBER);

此外,该过程需要成为模式/属于用户SMASTER的名为“SERVICE”的包的一部分。

答案 1 :(得分:0)

请务必检查您在元数据/代码中使用以下名称格式调用的过程:SCHEMA_USERNAME.PACKAGE_NAME.PROCEDURE_NAME