CLI の手引きおよび解説書

ユーザー定義タイプ (UDT) のキャスト

照会ステートメントの述部にパラメーター・マーカーが使用されており、かつ、そのパラメーターがユーザー定義タイプである場合には、ステートメントに 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 解説書 を参照してください。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]