在db2-unix中将模式名作为参数传递
我在模式A上的db2(luw)中有一个存储过程,如下所示在db2-unix中将模式名作为参数传递,db2,db2-luw,Db2,Db2 Luw,我在模式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 架构“A”上存在的给定存储过程在另一个架构“B”上运行查询。这是另
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
架构“A”上存在的给定存储过程在另一个架构“B”上运行查询。这是另一个模式名称B,可以根据应用程序逻辑进行更改。如何将架构名称作为参数传递到此存储过程?首先,我认为存储过程不起作用,因为select语句没有在游标或准备好的语句中定义 如果要在存储过程中执行动态SQL,需要在stmt中定义,然后准备并执行它 假设您将模式名称作为参数传递;如果要更改模式,可以动态执行“设置当前模式”或在查询中连接模式名称
有关更多信息:谢谢。在存储过程中使用动态SQL会影响性能吗?@jayesh是的,会影响性能;但这并不重要,因为如果需要更改SELECT的模式,则需要使用动态SQL。如果SELECT没有静态模式,则在编译函数时SQL无法编译语句——它不知道当时的表和列特征是什么。因此,您使用动态SQL;它本质上变成了一个“即时”SELECT语句。