sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Podemos usar los comandos DDL en una declaración preparada (PostgreSQL)?

¿Lo intentaste?

No es compatible con el servidor, por lo que incluso si parece funcionar en el controlador JDBC del lado del cliente, no lo recomiendo:

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

De todos modos, no hay ninguna ventaja en hacerlo, ya que no puede parametrizar ellos, así que no puedes escribir:

CREATE TABLE ? ( ? text, ...)

y luego especifique los valores de marcador de posición como parámetros de consulta para Statement .

En PostgreSQL solo planificado las sentencias se pueden preparar y parametrizar del lado del servidor. Actualmente eso significa INSERT , UPDATE , DELETE y SELECT .

Deberá realizar su propia interpolación de cadenas y citas seguras de acuerdo con reglas de estructura léxica - que son más o menos los de la especificación SQL. Envuelva todos los identificadores en "double quotes" y doble las comillas dobles literales, por ejemplo, "these are literal ""double quotes""" para el nombre de la tabla these are literal "double quotes" .

El solo hecho de que quiera hacer esto sugiere que probablemente tenga problemas de diseño en su esquema y que deba volver a pensar cómo está haciendo las cosas. ¿Tal vez publique una pregunta más detallada en dba.stackexchange.com que explique lo que quiere lograr con esto y por qué?