使用db2batch的db2过程SYSPROC.ADMIN_DROP_SCHEMA

use*_*421 6 database db2

从DB2 CMD成功调用以下内容,

SYSPROC.ADMIN_DROP_SCHEMA('TESTSCHEMA', NULL, 'ERRORSCHEMA', 'ERRORTABLE')
Run Code Online (Sandbox Code Playgroud)

输出参数的值

Parameter Name : ERRORTABSCHEMA
Parameter Value : TESTSCHEMA

Parameter Name : ERRORTAB
Parameter Value : ERRORTABLE

Return Status = 0
Run Code Online (Sandbox Code Playgroud)

但是当使用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
Run Code Online (Sandbox Code Playgroud)

有什么指针吗?仅在过去几天使用DB2.

小智 3

参数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@
Run Code Online (Sandbox Code Playgroud)

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