【问题标题】:db2 stored procedure incompatible arguments errordb2 存储过程参数不兼容错误
【发布时间】:2017-07-12 18:11:23
【问题描述】:

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

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

SQL0440N 未找到类型为“PROCEDURE”的名为“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')"

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

【问题讨论】:

    标签: stored-procedures db2


    【解决方案1】:

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

    【讨论】:

    • 你是对的!!数据库以管理员身份而不是正确的用户身份登录。当我使用 procschema 中的值正确登录时,它开始正常工作。谢谢你的帮助!!!!!!
    猜你喜欢
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2012-07-17
    相关资源
    最近更新 更多