2013-07-30 2 views
0

Я хотел бы обновить таблицу в динамическом sql.Динамический 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; 

работ.

Что случилось с первым решением?

ответ

1

вы не можете использовать переменные связывания для имен таблиц в PL/SQL

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

0

Usage Notes

».... Вы не можете использовать аргументы связывания для передачи имен объектов схемы в динамический оператор SQL ... »

Смежные вопросы