Oracle SQL:用于代替表名的变量

前端之家收集整理的这篇文章主要介绍了Oracle SQL:用于代替表名的变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在将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语句的一部分.
>动态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执行任何操作,因此执行此匿名块时不会显示任何内容.

猜你在找的Oracle相关文章