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
|