使用表格列表进行更新

时间:2015-08-19 10:23:49

标签: oracle variables plsql oracle11g

我在更新100个表时遇到问题。问题如下:

我必须在100个表中更新299列,为此我必须创建一个oracle过程。我创建了一个包含两列的表,其中我存储了表名和列。例如:

lookup_table:------
table_name column_name

现在我要做的是选择每一行并根据表名更新cols,因此我需要使用table_name和column_name作为变量。

如果有人在这种情况下工作,请告诉我。

1 个答案:

答案 0 :(得分:0)

对于此类动态操作,您需要(ab)在 PL / SQL 中使用 EXECUTE IMMEDIATE 。在SQL中,您不能使用动态对象名称,它必须是静态

我建议在 SQL 中执行此操作并准备所需的更新语句。使用优秀的文本编辑器不应该是一项艰巨的任务。

但是,如果您仍想在PL / SQL中执行此操作,则需要首先动态构建sql语句,然后使用 EXECUTE IMMEDIATE

例如,

SQL> set serveroutput on
SQL> DECLARE
  2    var_sql   VARCHAR2(1000);
  3    var_tab   VARCHAR2(10);
  4    var_ename VARCHAR2(10);
  5  BEGIN
  6    var_tab:= 'EMP';
  7    var_sql :='SELECT empno FROM '||var_tab||' WHERE empno=7369';
  8    EXECUTE IMMEDIATE var_sql INTO var_ename;
  9    DBMS_OUTPUT.PUT_LINE('Employee name is '||var_ename);
 10  END;
 11  /
Employee name is 7369

PL/SQL procedure successfully completed.

SQL>