我正在将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;
Run Code Online (Sandbox Code Playgroud)
其中VR_TABLE是变量表名,它将在循环的每次迭代中被更改.有人可以指出我做错了什么,或者将我链接到一个对我有用的网站吗?我已经阅读了一些这方面的教程,但到目前为止我还没有运气.
Jus*_*ave 18
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;
Run Code Online (Sandbox Code Playgroud)
当然,由于您没有执行任何操作VR_UPDATE,因此执行此匿名块时不会显示任何内容.
| 归档时间: |
|
| 查看次数: |
31109 次 |
| 最近记录: |