PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Podemos usar comandos DDL em uma instrução preparada (PostgreSQL)?


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