我在架构A上的db2(luw)中有一个存储过程,如下所示。
CREATE PROCEDURE A.GET_TOTAL (IN ID CHARACTER(23))
BEGIN
DECLARE CURSOR1 CURSOR WITH HOLD WITH RETURN TO CLIENT FOR
SELECT * FROM B.employee e where e.id=ID
END
给定sproc存在于模式" A"在另一个模式上运行查询" B"。该另一个模式名称B可以基于应用程序逻辑而改变。如何将模式名称作为参数传递给此sproc?
答案 0 :(得分:2)
首先,我认为存储过程不起作用,因为未在游标或预准备语句中定义select语句。
如果要在存储过程中执行动态SQL,则需要在stmt中定义,然后准备并执行它。
假设您将模式名称作为参数传递;如果要更改架构,可以动态执行“设置当前架构”或在查询中连接架构名称。
有关详细信息:http://www.toadworld.com/platforms/ibmdb2/w/wiki/7461.prepare-execute-and-parameter-markers.aspx