在 CURSOR 的 FOR 循环中使用 Dynamic SQL

Using a Dynamic SQL in the CURSOR's FOR LOOP

经过几个小时的搜索,我似乎无法找到解决这个简单问题的方法!

  CREATE PROCEDURE P()
  LANGUAGE SQL
  BEGIN ATOMIC
    DECLARE fullname CHAR(40);

    FOR v AS cur1 CURSOR FOR 
                SELECT firstnme, midinit, lastname FROM employee
    DO 
      SET fullname = v.lastname || ',' || v.firstnme 
                     ||' ' || v.midinit;
      INSERT INTO tnames VALUES (fullname);
    END FOR;
  END

上面的 DB2 存储过程块对 STATIC SQL 使用 FOR 循环,我尝试用动态 SQL 变量替换 SQL 但它不起作用。任何帮助都会很棒。

我知道我们可以使用 OPEN..FETCH..LOOP 块来做同样的事情,但我的要求是为此使用 FOR 循环。

非常感谢:) 费萨尔.

您可以使用一条 INSERT ... SELECT 语句来完成此操作:

INSERT INTO tnames
SELECT lastname || ',' || firstnme ||' ' || midinit
FROM employee;

FOR 是静态编译语句,不允许使用准备好的语句名称代替 SELECT 语句。

您可能想回顾一下您对要求的解释,或者跳出框框思考,从一个全新的角度来处理这个问题。