PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Pouvons-nous utiliser les commandes DDL dans une instruction préparée (PostgreSQL) ?

Avez-vous essayé ?

Il n'est pas pris en charge par le serveur, donc même s'il semble fonctionner dans le pilote JDBC côté client, je ne le recommande pas :

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 );
                ^

Il n'y a aucun avantage à le faire de toute façon puisque vous ne pouvez pas paramétrer eux, donc vous ne pouvez pas écrire :

CREATE TABLE ? ( ? text, ...)

puis spécifiez les valeurs d'espace réservé en tant que paramètres de requête à la Statement .

Dans PostgreSQL uniquement prévu les instructions peuvent être préparées et paramétrées côté serveur. Actuellement, cela signifie INSERT , UPDATE , DELETE et SELECT .

Vous devrez faire votre propre interpolation de chaîne et vos guillemets sécurisés selon règles de structure lexicale - qui sont à peu près ceux de la spécification SQL. Enveloppez tous les identifiants entre "double quotes" et doublez tous les guillemets doubles littéraux, par exemple "these are literal ""double quotes""" pour le nom de la table these are literal "double quotes" .

Le fait même que vous vouliez faire cela suggère que vous avez probablement des problèmes de conception dans votre schéma et que vous devrez peut-être repenser votre façon de procéder. Peut-être poster une question plus détaillée sur dba.stackexchange.com qui explique ce que vous voulez réaliser avec cela et pourquoi ?