sql - 选择列名到替换变量中
问题描述
理想情况下,我想在 Oracle SQL 中动态定义一个(替换)变量。以下显然不起作用,因为替换变量只是在“插入...”语句中逐字替换。
define colnames = '(select column_name from USER_TAB_COLS where table_name = B)';
insert into A(&colnames) select &colnames from B;
有没有办法做类似的事情?也许在 PL/SQL 中?
编辑:我在 SQL Developer 中工作,而不是在 SQL*PLUS 中。
解决方案
You will need EXECUTE IMMEDIATE
for this. Refer to https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/dynamic.htm#LNPLS01115
for more detailed usage, but in your case it will be
EXECUTE IMMEDIATE 'insert into a(:cols) select :cols from B' USING colnames, colnames;
推荐阅读
- c++ - C ++为什么允许分配对抽象类的引用?
- javascript - 计算数组Javascript中未定义的null,空字符串的总数
- javascript - 将“for loop”输出分组为四组
- c++ - 排序数组无法正常工作 C++
- r - 在 R 中,eval 没有在正确的环境中进行评估
- google-sheets - 如何从由两个管道分隔的表数据中提取/导入文本
- python - 尝试在 for 循环中设置列表的每一部分
- tensorflow - 安装张量流有困难
- html - 在 node express.js 应用程序中呈现视图页面的问题
- javascript - 如何从与某个键匹配的 JSON 对象创建一个数组?