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ê?