¿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é?