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 .