sql - 如何在 pl SQL 中将列值设置为列名,但我不知道列值是什么?
问题描述
我想从 aa 表中填充几个 aa.one、aa.two、aa.three 列,当我将 aa.one = 'abc' 放在 where 条件中时,我想将这些列名重命名为列值将填充。但有一件事我不知道表格中会填充什么值
解决方案
唯一的出路是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;
推荐阅读
- ruby-on-rails - Foundation 6 top-bar dropdown won't close
- curl - building netcdf on linux
- android - 第一次单击共享元素时,我的 SharedElement 过渡会闪烁
- javascript - 如何在本机反应中将事件侦听器添加到状态
- android - 如何将结果从 JavascriptInterface 传输到 OnCreate?
- firebase - Node 8 Firebase 函数无法从 CloudBuild 部署
- java - Totally disabling java net ssl debug logging
- css - 固定宽度高度会导致不必要的滚动 - Chrome 扩展
- java - 使用 tzupdater-2.2.0 更新 tzdata 2018f(2018-10-18 发布)时出错
- firebase - 使用 FCM 和 Twilio 发送短信