sql >> Databáze >  >> RDS >> PostgreSQL

Můžeme použít příkazy DDL v připraveném příkazu (PostgreSQL)?

Zkusili jste to?

Není podporován serverem, takže i když se zdá, že funguje v ovladači JDBC na straně klienta, nedoporučuji to:

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

Stejně to nemá žádnou výhodu, protože nemůžete parametrizovat je, takže nemůžete psát:

CREATE TABLE ? ( ? text, ...)

a poté zadejte zástupné hodnoty jako parametry dotazu do Statement .

V PostgreSQL pouze plánováno příkazy mohou být připraveny a parametrizovány na straně serveru. Aktuálně to znamená INSERT , UPDATE , DELETE a SELECT .

Budete muset provést vlastní interpolaci řetězců a bezpečné citování podle PostgreSQL pravidla lexikální struktury - což jsou do značné míry ty ze specifikace SQL. Zabalte všechny identifikátory do "double quotes" a dvojité doslovné dvojité uvozovky, např. "these are literal ""double quotes""" pro název tabulky these are literal "double quotes" .

Samotná skutečnost, že to chcete udělat, naznačuje, že pravděpodobně máte ve svém schématu problémy s návrhem a možná budete muset přehodnotit, jak na věci chodíte. Možná položte na dba.stackexchange.com podrobnější otázku, která vysvětluje, čeho tím chcete dosáhnout a proč?



  1. Jak využít WebDev.WebServer.exe (VS Web Server) v x64?

  2. SQL SERVER – Trik – Spouštění SSMS s jiným účtem Windows

  3. Znovu a znovu! Správa opakujících se událostí v datovém modelu

  4. Stream načtený z Postgres s jOOQ nevrací výsledky z kurzu