Förberedda uttalanden
Förklaringen till detta finns i kapitlet Konstanter av andra typer i manualen :
Djärv betoning min.
Parametrar för förberedda satser är faktiskt inte sting literals men skrev värden , så du kan inte använda formuläret type 'string'
. Använd en av de två andra formerna för att konvertera värdet till en annan typ, som om du redan har hittat dig själv.
Exempel:
PREPARE foo AS SELECT $1::date;
EXECUTE foo('2005-1-1');
Liknande för PQexecParams
i libpq C-biblioteket
Dokumentationen:
alternativet , som nämnts i citatet ovan, är att skicka OID för respektive datatyper med paramTypes[]
- om du verkligen behöver gipset. I de flesta fall borde det fungera alldeles utmärkt att låta Postgres härleda datatyper från frågekontexten.
Du kan hämta OID för datatyper från systemkatalogen pg_type
:
SELECT oid FROM pg_type WHERE typname = 'date';
Du måste använda rätt interna typnamn. Till exempel:int4
för integer
.
Eller med en bekvämlighet cast till regtype
:
SELECT 'date'::regtype::oid;
Detta är mer flexibelt eftersom kända alias för typnamnet också accepteras. Till exempel:int4
, int
eller integer
för integer
.