当前位置: 首页 > 面试题库 >

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

昌正奇
2023-03-14
问题内容

我正在将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是变量表名称,该变量表名称将在循环的每次迭代中更改。有人可以指出我做错了什么,还是可以将我链接到一个对我来说有用的网站?我已经阅读了一些有关此的教程,但是到目前为止,我还没有碰到任何运气。


问题答案:
  1. 您需要在表名和后续WHERE子句之间留一个空格
  2. INTO需求是在的一部分EXECUTE IMMEDIATE,而不是动态SQL语句的一部分。
  3. 动态SQL语句不应包含尾部分号
  4. 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不支持表名使用变量/ etc-支持您要求的唯一方法是使用动态SQL:

  • “新”工具Oracle SQLcl未解释” 预期的答案是:(使用sqlplus)

  • 问题内容: 我想动态更改插入数据的表的变量名。 这目前有效, 但是,当我尝试对表名(在这种情况下为“ FoodPorn”)执行相同操作时,对于动态表(如本例中的MachinePorn), 我得到这个错误, 这使我相信我无法通过这种方式执行操作,因此我想问一下如何执行该操作,以便最终可以在表中传递变量名,而不必每次都对其进行硬编码。 问题答案: 显示mysql连接器的异常是告诉您该表在您的数据库中不

  • 问题内容: 在什么情况下应该选择表格而不是HTML编码中的DIV? 问题答案: 整个“ Tables vs Divs”事情几乎没有遗漏。它不是“表”或“ div”。它是关于使用语义html的。 即使div标签在布局合理的页面中也只占一小部分。不要过度使用它。如果正确放置html,则不需要那么多。诸如列表,字段集,图例,标签,段落等之类的内容可以代替通常用于完成div或span的大部分内容。Div应

  • 问题内容: 当前在ES5中,我们许多人在框架中使用以下模式来创建类和类变量,这很方便: 在ES6中,您可以本机创建类,但是没有选择可以使用类变量: 可悲的是,上述方法不起作用,因为类只能包含方法。 我知道我可以在…但我不想“垃圾”我的构造,特别是当我有一个更大的类20-30 +参数。 我在考虑解决该问题的多种方法,但尚未找到任何好的方法。(例如:创建一个处理程序,并传递一个与类分开声明的对象。然后

  • 我是android新手,正在处理一个广播互联网连接状态的应用程序。我使用了一个不推荐使用的方法isConnectingOrConnected()。我无法修复我的代码,它令人困惑。请查看我的代码并帮我解决问题。真心感谢任何帮助 这是我的连接接收器代码 这是我的主要活动