Oracle
 sql >> Database >  >> RDS >> Oracle

Come dividere le istruzioni SQL di Oracle per ADO.NET

Senza il DDL, potresti creare un blocco PL/SQL anonimo circondando le istruzioni con BEGIN e END:

BEGIN
  INSERT INTO foo (bar) VALUES('one');
  INSERT INTO foo (bar) VALUES('two');
END;

Per eseguire DDL (come CREATE TABLE) dovresti usare PL/SQL dinamico:

BEGIN
  EXECUTE IMMEDIATE 'CREATE TABLE foo (bar VARCHAR2(100))';
  EXECUTE IMMEDIATE 'INSERT INTO foo (bar) VALUES(:v)' USING 'one';
  EXECUTE IMMEDIATE 'INSERT INTO foo (bar) VALUES(:v)' USING 'two';
END;

Anche gli INSERT sono dinamici, in quanto la tabella non esiste prima dell'esecuzione del blocco e quindi non riuscirebbe a compilare.

NOTA:questo sarebbe un requisito insolito:le applicazioni normalmente non dovrebbero creare tabelle!