0

我想更新动态 sql 中的表。

declare
    x varchar2(10) := 'table_n';
begin
    execute immediate 'update :1 set column_n = 12345' using x;
end;

我得到 ORA-00903: 无效的表名

declare
    x varchar2(10) := 'table_n';
begin
    execute immediate 'update ' || x ||  ' set column_n = 12345';
end;

作品。

第一个解决方案有什么问题?

4

3 回答 3

1

您不能在 pl/sql 中对表名使用绑定变量

于 2013-07-30T09:46:48.013 回答
0

动态sql:

1.It generally uses the SQL statements at run time. (for the time which we don't have data at the compilation time).
2. The bind variable , in your query, `x`, uses it on runtime and execute the dynamic on run time. 
3. the bind variable refered by colon is used after USING clause.

有关更多信息,请单击此处:http ://docs.oracle.com/cd/B28359_01/appdev.111/b28370/dynamic.htm

于 2013-07-30T09:49:24.420 回答
0

使用说明

“....您不能使用绑定参数将模式对象的名称传递给动态 SQL 语句....”

于 2013-07-30T09:51:59.523 回答