从变量运行 PL/SQL 更新语句

问题描述 投票:0回答:1

我正在尝试在游标中使用更新语句,但表名(和列名)等值会随着从游标中获取的每条记录而变化。我将表名和列名存储在表中,并将它们用作更新语句的参数。每次循环游标时,我都会使用 update 语句初始化一个变量。 我的问题是,如何执行存储在变量中的更新语句。我想在游标中的每个循环中执行更新语句。

谢谢。

我一直在用 update 语句初始化一个变量。 lv_update_statement := '更新 scpomgr。'|| lv_表名 || '设置' || lv_param_name || ' = ' || lv_param_value || ' 其中项目 = ' || lv_项目|| ' 和 loc = ' || lv_loc || ';';

oracle plsql plsqldeveloper
1个回答
0
投票

使用

EXECUTE IMMEDIATE
和字符串连接作为标识符,并使用绑定变量作为值(并且不要在语句中包含
;
终止符):

BEGIN
  FOR rw IN (
    SELECT table_name,
           param_name,
           param_value,
           item_value,
           loc_value
    FROM   your_table
  )
  LOOP
    EXECUTE IMMEDIATE 'update scpomgr.'|| rw.table_name
                  || ' set ' || rw._param_name || ' = :1'
                  || ' where item = :2'
                  || ' and   loc = :3'
      USING rw.param_value, rw.item_value, rw.loc_value;
  END LOOP;
END;
/
© www.soinside.com 2019 - 2024. All rights reserved.