sql >> Database >  >> RDS >> Oracle

Hoe Oracle SQL-instructies te splitsen voor ADO.NET

Zonder de DDL zou je een anoniem PL/SQL-blok kunnen maken door de statements te omringen met BEGIN en END:

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

Om DDL uit te voeren (zoals CREATE TABLE) moet u dynamische PL/SQL gebruiken:

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;

De INSERTS zijn ook dynamisch, omdat de tabel niet bestaat voordat het blok wordt uitgevoerd en dus niet kan worden gecompileerd.

OPMERKING:Dit zou een ongebruikelijke vereiste zijn:toepassingen zouden normaal gesproken geen tabellen moeten maken!



  1. Postgres:FOUT:plan in cache mag het resultaattype niet wijzigen

  2. Mysql krijgt de laatste id van een specifieke tabel

  3. Fout in tijdstempelkolom mysql

  4. PDO bindColumn en PDO::FETCH_BOUND -- verplicht of optioneel?