Pernyataan yang disiapkan
Penjelasan untuk ini dapat ditemukan dalam bab Konstanta Jenis Lain dari manual :
Penekanan saya yang berani.
Parameter untuk pernyataan yang disiapkan sebenarnya bukan literal menyengat tapi mengetik nilai , jadi Anda tidak dapat menggunakan formulir type 'string'
. Gunakan salah satu dari dua formulir lainnya untuk memberikan nilai ke jenis yang berbeda, seperti yang sudah Anda temukan.
Contoh:
PREPARE foo AS SELECT $1::date;
EXECUTE foo('2005-1-1');
Mirip dengan PQexecParams
di perpustakaan libpq C
Dokumentasi:
Alternatif , seperti yang disebutkan dalam kutipan di atas, adalah meneruskan OID dari masing-masing tipe data dengan paramTypes[]
- jika Anda benar-benar membutuhkan pemerannya. Dalam kebanyakan kasus, ini akan berfungsi dengan baik untuk membiarkan Postgres memperoleh tipe data dari konteks kueri.
Anda bisa mendapatkan OID tipe data dari katalog sistem pg_type
:
SELECT oid FROM pg_type WHERE typname = 'date';
Anda harus menggunakan nama tipe internal yang benar. Misalnya:int4
untuk integer
.
Atau dengan mudah beralih ke regtype
:
SELECT 'date'::regtype::oid;
Ini lebih fleksibel karena alias yang dikenal untuk nama tipe juga diterima. Misalnya:int4
, int
atau integer
untuk integer
.