加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 13:49:32 所属栏目:百科 来源:网络整理
导读:我正在将MSSQL脚本转换为Oracle,我无法弄清楚使用变量代替表名或列的语法. 这是一个简单的例子,我一直在尝试在Oracle SQL Developer中工作,所以我可以更好地理解语法: set serveroutput on format wrapped;declare VR_TABLE VARCHAR2(256); VR_UPDATE VARCH
我正在将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执行任何操作,因此执行此匿名块时不会显示任何内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读