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 .