照会ステートメントの述部にパラメーター・マーカーが使用されており、かつ、そのパラメーターがユーザー定義タイプである場合には、ステートメントに CAST 関数を使用して、パラメーター・マーカーまたは UDT のいずれかをキャストしなければなりません。
たとえば、次のようにタイプおよび表が定義されているとします。
CREATE DISTINCT TYPE CNUM AS INTEGER WITH COMPARISONS CREATE TABLE CUSTOMER ( Cust_Num CNUM NOT NULL, First_Name CHAR(30) NOT NULL, Last_Name CHAR(30) NOT NULL, Phone_Num CHAR(20) WITH DEFAULT, PRIMARY KEY (Cust_Num) )
このステートメントはパラメーター・マーカーがタイプ CNUM にはならないために失敗し、したがってタイプに互換性がないことから比較が失敗して、次のようになります。
SELECT first_name, last_name, phone_num FROM customer where cust_num = ?
列を整数 (その基本 SQL タイプ) にキャストすると、パラメーターには整数のタイプが与えられるので、比較を実行することができます。
SELECT first_name, last_name, phone_num from customer where cast( cust_num as integer ) = ?
あるいは、パラメーター・マーカーを INTEGER にキャストすることによって、サーバーは INTEGER に CNUM 変換を適用することができます。
SELECT first_name, last_name, phone_num FROM customer where cust_num = cast( ? as integer )
完全な作業サンプルについては、custrep.c サンプル・ファイルを参照してください。
以下の詳細については、SQL 解説書 を参照してください。