具有 into 关键字的动态 SQL Select 语句

Posted

技术标签:

【中文标题】具有 into 关键字的动态 SQL Select 语句【英文标题】:Dynamic SQL Select statement having into keyword 【发布时间】:2013-03-28 06:17:34 【问题描述】:

我有一个存储过程,它可以动态创建表并插入到该表中,这里一切正常。下面代码的问题

execute immediate
'SELECT NAME 
INTO variable1
FROM table1 
WHERE ID = 2';

错误是: 缺少关键字。

【问题讨论】:

【参考方案1】:
execute immediate
  'SELECT NAME FROM table1 WHERE ID = 2'
  into variable1;

【讨论】:

【参考方案2】:

您不希望INTO 成为动态 SQL 语句的一部分。它需要是EXECUTE IMMEDIATE的一部分

EXECUTE IMMEDIATE 
  'SELECT name FROM table1 WHERE id = 2'
  INTO variable1;

您几乎肯定希望在动态 SQL 语句中使用绑定变量来减少不断硬解析语句的开销。数字 2 几乎肯定来自其他地方,不应该是硬编码的。

EXECUTE IMMEDIATE 
  'SELECT name FROM table1 WHERE id = :val'
  INTO variable1
 USING some_variable_with_a_value_of_2;

【讨论】:

以上是关于具有 into 关键字的动态 SQL Select 语句的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL SELECT INTO 错误 (ORA-00905)

SQL学习select into:复制表信息

Oracle SQL:使用带有递归 CTE 的 SELECT INTO 时出现“缺少关键字”

select into 时有无strict关键字的区别

select into 时有无strict关键字的区别

select into 时有无strict关键字的区别