использование использования EXECUTE IMMEDIATE для оператора DML в хранимой процедуре - PullRequest
2 голосов
/ 24 июля 2011

Я новичок в процедурах PL SQL, у нас есть эта строка кода в разделе Выполнение хранимой процедуры.

У меня есть запрос здесь, пожалуйста, скажите мне, как использовать EXECUTE IMMEDIATEдля заявления DML здесь?и в каких случаях мы должны использовать EXECUTE IMMEDIATE?

v_update_query2 := 'INSERT INTO '||p_country||'.DETAILS ( ID, STATUS, DEST_SYSTEM, OUT_TIME ) VALUES ('''
    ||v_txn_id ||''','||'''T081'''||','||'''CLEARING'''||', SYSDATE)';



EXECUTE IMMEDIATE v_update_query1 ;

1 Ответ

3 голосов
/ 24 июля 2011

EXECUTE IMMEDIATE - единственный способ иметь переменные ссылки на объекты схемы - например, имена таблиц, имена столбцов и т. Д.

. Позволяет создать любую строку и затем выполнить ее.строка как оператор SQL.
Без него переменные процедуры могут использоваться только для значений в sql, например, select * from table where column = my_variable

В вашем примере имя таблицы предоставляетсяпеременная p_country - это элемент схемы, поэтому вам нужно EXECUTE IMMEDIATE.

...