3

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

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

错误是:缺少关键字。

4

2 回答 2

3
execute immediate
  'SELECT NAME FROM table1 WHERE ID = 2'
  into variable1;
于 2013-03-28T06:32:54.350 回答
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;
于 2013-03-28T06:39:54.743 回答