Do wykonywania dynamicznych instrukcji SQL wykorzystywane jest wyrażenie
EXECUTE IMMEDIATE.
Przykład:
EXECUTE IMMEDIATE 'create table tab1(id NUMBER)';
Przykład:
query:='create table :name (id NUMBER)';
tabname:='tab1';
EXECUTE IMMEDIATE query USING tabname;
W powyższym przykładzie do zmiennej przypisaliśmy łańcuch, w którym zamiast
:name spodziewamy się zmiennej dynamicznej podanej podczas wywoływania
wyrażenia EXECUTE IMMEDIATE zaraz za słowem USING. Ważne jest, że
zapytanie może mieć więcej dynamicznych zmiennych. W takiej sytuacji pod
pierwszy argument zapytania zostanie podstawiona pierwsza zmienna znajdująca
się po klauzuli USING. Pod drugi argument zostanie podstawiona druga zmienna itd.
Przykład:
query:='grant :right ON :object TO :trustee';
right:='INSERT';
object:='table1';
trustee:='user8';
EXECUTE IMMEDIATE query USING right, object, trustee;
Przykład:
query:='update tab1 set col1=100 where col2=:1 RETURNING col2 INTO :2';
EXECUTE IMMEDIATE query USING value1 RETURNING value2;
Powrót
|