Připravená prohlášení
Vysvětlení tohoto lze nalézt v kapitole Konstanty jiných typů příručky :
Tučné zdůraznění moje.
Parametry pro připravené příkazy ve skutečnosti nejsou sting literály ale zadali hodnoty , takže nemůžete použít formulář type 'string'
. Použijte jeden z dalších dvou formulářů k přetypování hodnoty na jiný typ, jako jste se již našli.
Příklad:
PREPARE foo AS SELECT $1::date;
EXECUTE foo('2005-1-1');
Podobné pro PQexecParams
v knihovně libpq C
Dokumentace:
alternativa , jak je uvedeno v citaci výše, je předat OID příslušných datových typů pomocí paramTypes[]
- pokud skutečně potřebujete obsazení. Ve většině případů by mělo fungovat dobře, když necháte Postgres odvozovat datové typy z kontextu dotazu.
OID datových typů můžete získat ze systémového katalogu pg_type
:
SELECT oid FROM pg_type WHERE typname = 'date';
Musíte použít správný interní název typu. Například:int4
pro integer
.
Nebo s pohodlným obsazením do regtype
:
SELECT 'date'::regtype::oid;
To je flexibilnější, protože jsou akceptovány i známé aliasy pro název typu. Například:int4
, int
nebo integer
pro integer
.