首页 > 解决方案 > 如何在 pl SQL 中将列值设置为列名,但我不知道列值是什么?

问题描述

我想从 aa 表中填充几个 aa.one、aa.two、aa.three 列,当我将 aa.one = 'abc' 放在 where 条件中时,我想将这些列名重命名为列值将填充。但有一件事我不知道表格中会填充什么值

标签: sqloracleplsql

解决方案


唯一的出路是dynamic SQL您必须动态地编写整个语句并使用execute immediate.

请注意,它很难维护;对于非常简单的情况可能没问题,但对于复杂的查询......在实际做一些事情之前我会三思而后行。

像这样的东西:

declare
  l_str varchar2(200);
begin
  l_str := 'update '    || par_table_name     || ' set ' ||
           par_column_1 || ' = ' || par_value_1          ||
           ' where '    || par_column_where_1 || ' = '   || par_column_where_value_1;

  execute immediate l_str;
end;

推荐阅读