Stored procedures 如何设置可选的输出参数
我有一个动态存储过程,用于运行多个select查询。我定义了如下内容Stored procedures 如何设置可选的输出参数,stored-procedures,db2,cobol,Stored Procedures,Db2,Cobol,我有一个动态存储过程,用于运行多个select查询。我定义了如下内容 CREATE PROCEDURE DYNAMIC (IN IN_COLUMN1 VARCHAR(150), IN IN_COLUMN2 VARCHAR(500), IN IN_COLUMN3 VARCHAR(500), IN IN_COLUMN4
CREATE PROCEDURE DYNAMIC
(IN IN_COLUMN1 VARCHAR(150),
IN IN_COLUMN2 VARCHAR(500),
IN IN_COLUMN3 VARCHAR(500),
IN IN_COLUMN4 CHAR(08),
IN IN_COLUMN5 DATE,
IN IN_COLUMN6 CHAR(05),
OUT OUT_COLUMN1 CHAR(01),
OUT OUT_COLUMN2 DEC(4,0),
OUT OUT_COLUMN3 DEC(4,0),
OUT OUT_COLUMN4 CHAR(04),
OUT OUT_COLUMN5 DATE
这里的问题是,当我运行Query1时,我将从coboldb2程序传入in_COLUMN1、in_COLUMN2、in_COLUMN3中的输入,并将输出提取到OUT_COLUMN1中。我将初始化程序中的所有输入,因为其他输出参数如OUT_COLUMN2、OUT_COLUMN3、OUT_COLUMN4和OUT_COLUMN5将为null,我得到的是SQLCODE“-305”
为了解决这个问题,我尝试将输出参数设置为默认值,如下所示,但在部署时出错
OUT OUT_COLUMN2 DEC(4,0) DEFAULT NULL,
有没有办法处理这件事。我使用COBOL调用在DB2中运行的存储过程。假设IBM Enterprise COBOL 要在SQL中处理COBOL主机变量中的空值,需要为每个可空变量分配一个“空指示符” 参见:(用COBOL语言举例说明) 如果结果变量为null,则null指示符通常为负值 默认情况下,DB2forz/OS本机SQL存储过程的所有参数都可以为空。() 对于解决我所感知的手头任务的其他方法 虽然我认为至少DB2用户定义函数可以支持,但存储过程不支持。这可能是另一种选择 否则,我是否可以建议从存储过程返回一个动态结果集?然后将由存储过程的调用者来处理结果集的不同配置,这在COBOL中是完全可行的 关于UDF重载: 一个架构可以包含多个同名函数,但每个函数都有不同数量的参数或具有不同数据类型的参数。此外,具有相同名称、参数数量和参数类型的函数可以存在于多个架构中
希望能有所帮助。假设IBM Enterprise COBOL 要在SQL中处理COBOL主机变量中的空值,需要为每个可空变量分配一个“空指示符” 参见:(用COBOL语言举例说明) 如果结果变量为null,则null指示符通常为负值 默认情况下,DB2forz/OS本机SQL存储过程的所有参数都可以为空。() 对于解决我所感知的手头任务的其他方法 虽然我认为至少DB2用户定义函数可以支持,但存储过程不支持。这可能是另一种选择 否则,我是否可以建议从存储过程返回一个动态结果集?然后将由存储过程的调用者来处理结果集的不同配置,这在COBOL中是完全可行的 关于UDF重载: 一个架构可以包含多个同名函数,但每个函数都有不同数量的参数或具有不同数据类型的参数。此外,具有相同名称、参数数量和参数类型的函数可以存在于多个架构中
希望对您有所帮助。谢谢,它起作用了,但我必须对所有输出字段使用NULL指示符,即使该字段定义为NOT NULL。谢谢,它起作用了,但我必须对所有输出字段使用NULL指示符,即使该字段定义为NOT NULL。