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 .