Voorbereide verklaringen
De verklaring hiervoor is te vinden in het hoofdstuk Constanten van andere typen van de handleiding :
Vetgedrukte nadruk van mij.
Parameters voor voorbereide uitspraken zijn eigenlijk geen stekende letterlijke tekens maar typte waarden , dus u kunt het formulier type 'string' . niet gebruiken . Gebruik een van de andere twee vormen om de waarde naar een ander type te casten, zoals je zelf al hebt gevonden.
Voorbeeld:
PREPARE foo AS SELECT $1::date;
EXECUTE foo('2005-1-1');
Vergelijkbaar met PQexecParams in de libpq C bibliotheek
De documentatie:
Het alternatief , zoals vermeld in het bovenstaande citaat, is om de OID's van de respectieve gegevenstypen door te geven met paramTypes[] - als je de cast echt nodig hebt. In de meeste gevallen zou het prima moeten werken om Postgres datatypes te laten afleiden uit de querycontext.
U kunt de OID van gegevenstypen ophalen uit de systeemcatalogus pg_type
:
SELECT oid FROM pg_type WHERE typname = 'date';
U moet de juiste interne typenaam gebruiken. Bijvoorbeeld:int4 voor integer .
Of met een gemak cast naar regtype
:
SELECT 'date'::regtype::oid;
Dit is flexibeler omdat bekende aliassen voor de typenaam ook worden geaccepteerd. Bijvoorbeeld:int4 , int of integer voor integer .