PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Können wir DDL-Befehle in einer vorbereiteten Anweisung (PostgreSQL) verwenden?

Hast du es versucht?

Es wird vom Server nicht unterstützt, also empfehle ich es nicht, selbst wenn es im clientseitigen JDBC-Treiber zu funktionieren scheint:

regress=> PREPARE CREATE TABLE test ( id serial primary key );
ERROR:  syntax error at or near "CREATE"
LINE 1: PREPARE CREATE TABLE test ( id serial primary key );
                ^

Es hat sowieso keinen Vorteil, da Sie nicht parametrieren können Sie können also nicht schreiben:

CREATE TABLE ? ( ? text, ...)

und geben Sie dann die Platzhalterwerte als Abfrageparameter für das Statement an .

In PostgreSQL nur geplant Statements können serverseitig vorbereitet und parametrisiert werden. Derzeit bedeutet das INSERT , UPDATE , DELETE und SELECT .

Sie müssen Ihre eigene Zeichenfolgeninterpolation und sichere Anführungszeichen gemäß PostgreSQLs lexikalische Strukturregeln - die so ziemlich die der SQL-Spezifikation sind. Schließen Sie alle Bezeichner in "double quotes" ein und verdoppeln Sie alle wörtlichen doppelten Anführungszeichen, z. B. "these are literal ""double quotes""" für den Tabellennamen these are literal "double quotes" .

Die bloße Tatsache, dass Sie dies tun möchten, deutet darauf hin, dass Sie wahrscheinlich Designprobleme in Ihrem Schema haben und möglicherweise überdenken müssen, wie Sie die Dinge angehen. Stellen Sie vielleicht eine detailliertere Frage auf dba.stackexchange.com, die erklärt, was Sie damit erreichen möchten und warum?