我正在将MSSQL脚本转换为Oracle,但无法弄清楚使用变量代替表名或表列的语法。
这是我尝试在Oracle SQL Developer中工作的一个简单示例,因此我可以更好地理解语法:
set serveroutput on format wrapped;
declare
VR_TABLE VARCHAR2(256);
VR_UPDATE VARCHAR2(256);
begin
VR_TABLE :='SYSTEM_STATUS';
EXECUTE IMMEDIATE 'select UPDATE_VERSION INTO VR_UPDATE from ' || VR_TABLE || 'where rownum < 2 ;'
end;
其中VR_TABLE是变量表名称,该变量表名称将在循环的每次迭代中更改。
有人可以指出我做错了什么,还是可以将我链接到一个对我来说有用的网站?我已经阅读了一些有关此的教程,但是到目前为止我还没有任何运气。
最佳答案
WHERE
子句INTO
必须是EXECUTE IMMEDIATE
的一部分,而不是动态SQL语句的一部分。 EXECUTE IMMEDIATE
语句应以分号放在一起,这样的事情应该工作
declare
VR_TABLE VARCHAR2(256);
VR_UPDATE VARCHAR2(256);
begin
VR_TABLE :='SYSTEM_STATUS';
EXECUTE IMMEDIATE 'select UPDATE_VERSION from ' || VR_TABLE || ' where rownum < 2'
INTO VR_UPDATE;
end;
当然,由于您没有使用
VR_UPDATE
做任何事情,因此当执行此匿名块时,将不会显示任何内容。
关于sql - Oracle SQL : variables used in place of table names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11622233/