Dit artikel beschrijft hoe je dynamic SQL kunt gebruiken in je applicaties. Je leert simpele manieren om programma’s te schrijven die SQL statements ‘on the fly’ kan bouwen en uitvoeren
Introductie In Oracle 8i wordt een nieuwe mogelijkheid geïntroduceerd genaamd ‘native dynamic SQL’. Een alternatief voor DBMS_SQL. Met het gebruik van ‘native dynamic SQL’, maakt het mogelijk om SQL statements directl in PL/SQL blocks te laden. In de meeste gevallen kan dynamic SQL, DBMS_SQL vervangen. Het EXECUTE IMMEDIATE statement bouwt en voert het dynamic SQL statement of een anoniem PL/SQL block gelijk uit. Syntax EXECUTE IMMEDIATE dynamic_string [INTO {define_variable[, define_variable]... | record}] [USING [IN | OUT | IN OUT] bind_argument [, [IN | OUT | IN OUT] bind_argument]...]; dynamic_string is een string expression dat een SQL statement of een PL/SQL block representeerd define_variable is een variable dat een geselecteerde kolom waarde bevat record is een user-defined of %ROWTYPE record dat een geselecteerde rij bevat, bind_argument is een expression wiens waarde is doorgegeven aan het dynamic SQL statement of PL/SQL block. Behalve voor multi row queries, kan de string ieder SQL statement bevatten(zonder de terminator) of ieder PL/SQL block (met de terminator). De string kan ook 'placeholders' voor 'bind' argumenten bevatten. Voorbeeld: sql_commando := 'INSERT INTO dept VALUES (:1, :2, :3)'; EXECUTE IMMEDIATE sql_commando USING 20, 30, 40; EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :n' USING 40; plsql_block := 'BEGIN emp_stuff.raise_salary(:id, :amt); END;'; EXECUTE IMMEDIATE plsql_block USING 7788, 500; EXECUTE IMMEDIATE 'CREATE TABLE bonus (id NUMBER, amt NUMBER)'; |