Você tentou?
Não é suportado pelo servidor, portanto, mesmo que pareça funcionar no driver JDBC do lado do cliente, não recomendo:
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 );
^
Não há vantagem em fazer isso de qualquer maneira, pois você não pode parametrizar eles, então você não pode escrever:
CREATE TABLE ? ( ? text, ...)
e, em seguida, especifique os valores de espaço reservado como parâmetros de consulta para a
Statement
. No PostgreSQL apenas planejado instruções podem ser preparadas e parametrizadas no lado do servidor. Atualmente isso significa
INSERT
, UPDATE
, DELETE
e SELECT
. Você precisará fazer sua própria interpolação de string e citação segura de acordo com o regras de estrutura lexical - que são praticamente os da especificação SQL. Coloque todos os identificadores em
"double quotes"
e dobre quaisquer aspas duplas literais, por exemplo "these are literal ""double quotes"""
para o nome da tabela these are literal "double quotes"
. O próprio fato de você querer fazer isso sugere que você provavelmente tem problemas de design em seu esquema e pode precisar repensar como está fazendo as coisas. Talvez poste uma pergunta mais detalhada em dba.stackexchange.com que explique o que você deseja alcançar com isso e por quê?