Tabelle erstellen wenn es nicht vorhanden ist, und geben Sie eine Zeile nach der Erstellung
Muss ich eine Tabelle erstellen wenn es nicht vorhanden ist, und wenn es erstellt wird, fügen Sie eine einzelne Zeile es.
Ich bin neu in oracle und PL/SQL, so dass ich im Grunde muss ein äquivalent für die folgende T-SQL:
IF OBJECT_ID('my_table', 'U') IS NULL
BEGIN
CREATE TABLE my_table(id numeric(38,0), date datetime)
INSERT INTO my_table
VALUES (NULL, 0)
END
- Was ist die Argumentation hinter dieser Anforderung? Ist es eine Hausaufgaben-Frage? In der Regel sollten Sie nicht werden, das erstellen von Tabellen in PL/SQL - Tabellen sind permanente Objekte, die sollten einmal angelegt werden und dann in einen code. Wenn Sie nach einem Tisch auf house-Daten vorübergehend, dann sollten Sie das erstellen einer Globalen Temporären Tabelle (GTT), die eine permanente Tabelle, die es erlaubt, Daten temporär gespeichert werden, auf einer pro-Sitzung-basis (ie. Sitzung 2 kann nicht sehen, Daten in der GTT, der Einheit 1 gespeichert und Umgekehrt).
- wie Sie sybase syntax
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie möchten, um zu überprüfen, Erstellung der Tabelle
Einer Prüfung für
DML
.bitte beachten Sie zu sepcify Ihre pk-Spalten und-Werte.beachten Sie auch, ich recomand zu Spalten angeben, wenn Sie in eine Tabelle einfügen
col_count
-, die Sie haben, inkonsistente Namen für! - null ist redundant.)execute immediate
Aussagen zusammen, die in den ersten block?Ein weiterer Ansatz ist die Verwendung von Ausnahme-Logik. Ich änderte die Feldnamen und-Typen nach Oracle Regeln
aber vielleicht ist es nicht eine gute Idee, um Tabellen zu erstellen, die dynamisch
Meiner Meinung nach, sollte man nicht sein, Objekte zu erstellen on-the-fly. Sollten Sie sich Gedanken über Ihr design, bevor Sie Sie implementieren.
Sowieso, wenn Sie wirklich wollen, es zu tun auf diese Weise, dann müssen Sie es tun programmgesteuert in PL/SQL (ab)mit EXECUTE IMMEDIATE.
Allerdings würde ich lieber den CTAS d.h.
create table as select
wenn Sie eine Tabelle erstellen möchten ta einmal mit einer einzelnen Zeile. Zum Beispiel,Die Tabelle erstellt wird dauerhaft.
Wenn Sie sich für eine temporäre Tabelle, die Sie verwenden können, speichern session-spezifische Daten , dann schauen Sie auf erstellen von Globalen temporären Tabelle.
Aus Dokumentation,
Können Sie NICHT VORHANDEN IST mit der select-Anweisung:
UPDATE
Laut dem Kommentar kann ich nicht benutzen, Existiert direkt in PL/SQL. So dies ist ein weiterer Weg, es zu tun:
IF
in plain SQL sowieso, aber wenn Sie dieSELECT 1 FROM my_table
würde noch bekommen ORA-00942. Wenn Sie Tat dies in einer PL/SQL-block, die Sie würde tun müssen, das erstellen und einfügen dynamisch, und Sie können nichtexists
direkt in PL/SQL entweder nur in SQL.