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
.