如何在 sql*plus 中执行动态 sql 语句

How to execute a dynamic sql statement in sql*plus

我想使用动态 sql 语句修改值。该示例被选择为可重现的。我知道我不需要动态的 sql 声明。

variable a number =1;
print a 

1

exec execute immediate 'select 2 into :a from dual'

PL/SQL procedure successfully completed.

 print a

1

返回 1 而不是 2,这意味着我的语句没有被执行。

那么,如何执行呢?

INTO应该出execute immediate:

SQL> var a number = 1;
SQL> print a

         A
----------
         1

SQL> exec execute immediate 'select 2 from dual' into :a;

PL/SQL procedure successfully completed.

SQL> print a

         A
----------
         2

SQL>