db2存储过程不兼容的参数错误

时间:2017-07-12 18:11:24

标签: stored-procedures db2

我是存储过程的新手。基本上,我正在尝试创建一个存储过程,我试图从db2命令行界面调用它来将记录插入表中。

在我的数据库中成功创建存储过程。但是,当我传递参数来调用存储过程时,它会抛出以下错误。

  

SQL0440N没有名为&#34的授权例程; COM_PROC_INSERT_FAILURE_XMESSAGE_MAIN"类型"程序"找到了兼容的参数。 SQLSTATE = 42884

我创建了XMESSAGE表,并根据XMESSAGE表中的相同数据类型创建了存储过程。

我创建的存储过程如下所示:

CREATE PROCEDURE com_proc_insert_failure_XMESSAGE_main(
    OUT errmsg CHAR(5),
    IN XMESSAGE_ID BIGINT,
    IN XMESSAGETYPE_ID CHAR(32),
    IN ISPROCESSED INTEGER,
    IN FOREIGN_ID BIGINT,
    IN FIELD1 VARCHAR(254),
    IN FIELD2 VARCHAR(254),
    IN FIELD3 VARCHAR(4000),
    IN ORDER_ID VARCHAR(30)
)
LANGUAGE SQL
BEGIN

DECLARE SQLSTATE CHAR(5);

INSERT INTO XMESSAGE (XMESSAGE_ID, XMESSAGETYPE_ID, ISPROCESSED, FOREIGN_ID, FIELD1, FIELD2, FIELD3, ORDER_ID ) 
VALUES (XMESSAGE_ID, XMESSAGETYPE_ID, ISPROCESSED, FOREIGN_ID, FIELD1, FIELD2, FIELD3, ORDER_ID );

SET errmsg = SQLSTATE;

END@

我从db2命令行界面调用存储过程,如下所示

db2 "call com_proc_insert_failure_XMESSAGE_main(?, 123456789,'TEST_MESSAGE',1,1,'TESTMESSAGE','111','test','12345')"

我相信我正确传递参数。有人可以让我知道问题出在哪里吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

检查“创建程序”时使用的架构是否为'匹配调用时的默认架构。 procschema列中的syscat.procedures条目应该是调用时的隐式auth-id,否则在调用时使用该procschema限定sproc名称。