首页 > 解决方案 > 选择列名到替换变量中

问题描述

理想情况下,我想在 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 中。

标签: sqloracleoracle-sqldeveloper

解决方案


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;


推荐阅读