6

从 DB2 CMD 成功调用以下命令,

SYSPROC.ADMIN_DROP_SCHEMA('TESTSCHEMA', NULL, 'ERRORSCHEMA', 'ERRORTABLE')

输出参数值

Parameter Name : ERRORTABSCHEMA
Parameter Value : TESTSCHEMA

Parameter Name : ERRORTAB
Parameter Value : ERRORTABLE

Return Status = 0

但是当使用 db2batch 通过 Perl 脚本运行相同的命令时,会出现以下错误,

CLI error in preparing the SQL statement:
(-469): [IBM][CLI Driver][DB2/NT] SQL0469N  The parameter mode OUT or INOUT is n
ot valid for a parameter in the routine named "ADMIN_DROP_SCHEMA" with specific
name "ADMIN_DROP_SCHEMA" (parameter number "3", name "ERRORTABSCHEMA").  SQLSTAT
E=42886

任何指针?仅在过去几天从事 DB2 工作。

4

1 回答 1

2

参数ERRORTABSCHEMAERRORTAB是 INOUT 变量,在使用它们之前需要声明它们。

您可以改为创建存储过程并调用存储过程:

CREATE OR REPLACE PROCEDURE sample.delete_schema() BEGIN
    declare varErrSchema varchar(128) default 'ERRORSCHEMA';
    declare varErrTable varchar(128) default 'ERRORTAB';
    call sysproc.admin_drop_schema ('SCHEMANAME', NULL, varErrSchema, varErrTable);
END@

然后可以调用存储过程调用sample.delete_schema()

于 2017-09-22T15:08:33.060 回答