ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

表3-7は、SQL仮パラメータに対するCOBOL宣言を示しています。

表3-7 SQL仮パラメータのデータ型に対するCOBOL宣言
SQL仮パラメータのデータ型 互換性のあるCOBOLのパラメータ宣言7
CHAR(10) 01 STR1 PICTURE X(10).
CHAR(10) CHARACTER SET KANJI 01 STR1 PICTURE X(20).6
NCHAR(10) 01 STR1 PICTURE X(10).6
VARCHAR(80)
01 STR2.

49 STR2L PICTURE S9(4) COMP.
49 STR2C PICTURE X(80).
VARCHAR(80)
CHARACTER SET KANJI
01 STR2 CHARACTER SET KANJI.

49 STR2L PICTURE S9(4) COMP.
49 STR2C PICTURE X(160). 6
NCHAR VARYING(80)
01 STR2.

49 STR2L PICTURE S9(4) COMP.
49 STR2C PICTURE X(80). 6
LONG VARCHAR
01 STR3.

49 STR3L PICTURE S9(4) COMP.
49 STR3C PICTURE X(16383).
SMALLINT(2)
SMALLINT
01 NUM1 PICTURE S99V99 COMP.
01 NUM1 PICTURE S9(4) COMP.
INTEGER(2)
INTEGER
01 NUM2 PICTURE S9(7)V99 COMP.
01 NUM2 PICTURE S9(9) COMP.
BIGINT(2)
BIGINT
01 NUM3 PIC S9(16)V99 COMP.
01 NUM3 PIC S9(18) COMP.
DECIMAL(18,2)
DECIMAL(18)
01 NUM4 PIC S9(16)V99 COMP3.
01 NUM4 PIC S9(18) COMP3.
NUMERIC(18,2)
NUMERIC(18)
01 NUM5 PIC S9(16)V99 SIGN LEADING SEPARATE.
01 NUM5 PIC S9(18) SIGN LEADING SEPARATE.
FLOAT(6)
FLOAT(25)
01 NUM6 COMP-1.1
01 NUM6 COMP-2.1
REAL 01 NUM7 COMP-1.1
DOUBLE PRECISION 01 NUM8 COMP-2.1
DATE DATEの解釈に依存2
DATE ANSI 同等のOpenVMSなし3
DATE VMS
type SQL_DATE_VMS is

record
10 : integer;
11 : integer;
end record;
TIME 同等のOpenVMSなし3
TIMESTAMP 同等のOpenVMSなし3
INTERVAL DAY TO SECOND 同等のOpenVMSなし3、4
LIST OF BYTE VARYING サポートなし5
   


1SQLモジュール・プロセッサのコマンドラインの/FLOAT修飾子または/[NO]G_FLOAT修飾子は、COBOLのコンパイルのそれと一致している必要があります。
2SQLでは、SQLモジュール・ファイル内でDEFAULT DATE FORMAT SQL92を指定して定義環境を変更しないかぎり、修飾されていないDATEデータ型はデフォルトでDATE VMSとして解釈されます。
3DATE VMS以外では、日時データ型の長さと書式はOracle Rdbで使用するために予約されています。ホスト・プログラムでは、表4-2に示されているデータ型を使用してください。
4INTERVALデータ型には、他に12個の修飾子の組合せがあります。表2-9を参照してください。
5モジュール言語では、仮パラメータのデータ型としてLIST OF BYTE VARYINGはサポートされません。ただし、クワッドワードまたは8バイトの文字列を使用して、セグメント化された文字列識別子、リストの先頭要素のポインタを取得できます。リストの個別要素の値を取得するには、CHARデータ型またはVARCHARデータ型のホスト言語変数を使用します。
6文字長およびモジュール言語の詳細は、第3.3節を参照してください。
7セッションのデフォルト・キャラクタ・セットおよび各国語キャラクタ・セットがDEC_MCSであると想定しています。

表3-8は、SQL仮パラメータに対するFORTRAN宣言を示しています。

表3-8 SQL仮パラメータのデータ型に対するFORTRAN宣言
SQL仮パラメータのデータ型 互換性のあるFORTRANのパラメータ宣言9
CHAR(10) CHARACTER*10 STR1
CHAR(10) CHARACTER SET KANJI CHARACTER*20 STR18
NCHAR(10) CHARACTER*10 STR18
VARCHAR(80) サポートなし1
VARCHAR(80)
CHARACTER SET KANJI
サポートなし1
NCHAR VARYING(80) サポートなし1
LONG VARCHAR サポートなし1
TINYINT(2)
TINYINT
サポートなし1
LOGICAL*12
SMALLINT(2)
SMALLINT
サポートなし1
INTEGER*2 NUM1
INTEGER(2)
INTEGER
サポートなし1
INTEGER*4 NUM2
BIGINT(2)
BIGINT
サポートなし1
サポートなし1
DECIMAL(18,2)
DECIMAL(18)
サポートなし1
サポートなし1
NUMERIC(18,2)
NUMERIC(18)
サポートなし1
サポートなし1
FLOAT(6)
FLOAT(25)
REAL*4 NUM43
DOUBLE PRECISION NUM43
REAL REAL*4 NUM53
DOUBLE PRECISION DOUBLE PRECISION NUM63
DATE DATEの解釈に依存4
DATE ANSI 同等のOpenVMSなし5
DATE VMS STRUCTURE /SQL_DATE_VMS/
INTEGER*4 L0
INTEGER*4 L1
END STRUCTURE
TIME 同等のOpenVMSなし5
TIMESTAMP 同等のOpenVMSなし5
INTERVAL DAY TO SECOND 同等のOpenVMSなし5、6
LIST OF BYTE VARYING サポートなし7


1FORTRANでは、可変文字、スケール付き整数または数値の各データ型はサポートされません。これらのデータ型で定義されている列をデータベースから取得するには、FORTRANでサポートされているデータ型で仮パラメータを宣言し、SQLモジュール・プロシージャ文でこれらの仮パラメータを参照します。SQLで列内のデータが仮パラメータのデータ型に変換されます。
2FORTRANでは、BYTEはLOGICAL*1のシノニムであり、Oracle RdbのSQLインタフェースによって解析されます。
3SQLモジュール・プロセッサのコマンドラインの/FLOAT修飾子または/[NO]G_FLOAT修飾子は、FORTRANのコンパイルのそれと一致している必要があります。
4SQLでは、SQLモジュール・ファイル内でDEFAULT DATE FORMAT SQL92を指定して定義環境を変更しないかぎり、修飾されていないDATEデータ型はデフォルトでDATE VMSとして解釈されます。
5DATE VMS以外では、日時データ型の長さと書式はOracle Rdbで使用するために予約されています。ホスト・プログラムでは、表4-2に示されているデータ型を使用してください。
6INTERVALデータ型には、他に12個の修飾子の組合せがあります。表2-9を参照してください。
7モジュール言語では、仮パラメータのデータ型としてLIST OF BYTE VARYINGはサポートされません。ただし、8バイトの文字列を使用して、セグメント化された文字列(リスト)識別子、リストの先頭要素のポインタを取得できます。リストの個別要素の値を取得するには、CHARデータ型のホスト言語変数を使用します。
8文字長およびモジュール言語の詳細は、第3.3節を参照してください。
9セッションのデフォルト・キャラクタ・セットおよび各国語キャラクタ・セットがDEC_MCSであると想定しています。

表3-9は、SQL仮パラメータに対するPascal宣言を示しています。

表3-9 SQL仮パラメータのデータ型に対するPascal宣言
SQL仮パラメータのデータ型 互換性のあるPascalのパラメータ宣言11
CHAR(10) VAR STR1 : PACKED ARRAY [1..10] OF CHAR;
CHAR(10) CHARACTER SET KANJI VAR STR1 : PACKED ARRAY [1..20] OF CHAR;10
NCHAR(10) VAR STR1 : PACKED ARRAY [1..10] OF CHAR;10
VARCHAR(80) VAR STR2 : VARYING [80] OF CHAR;
VARCHAR(80)
CHARACTER SET KANJI
VAR STR2 : VARYING [160] OF CHAR;10
NCHAR VARYING(80) VAR STR2 : VARYING [80] OF CHAR;10
LONG VARCHAR VAR STR3 : VARYING [16383] OF CHAR;
TINYINT(2)
TINYINT
サポートなし1
VAR NUM1 : [BYTE] --128..127;
SMALLINT(2)
SMALLINT
サポートなし1
VAR NUM1 : [WORD] --32768..32767;
INTEGER(2)
INTEGER
サポートなし1
VAR NUM2 : [LONG] --MAXINT..+MAXINT;
BIGINT(2)
BIGINT
サポートなし1
サポートなし1
DECIMAL(18,2)
DECIMAL(18)
サポートなし1
サポートなし1
NUMERIC(18,2)
NUMERIC(18)
サポートなし1
サポートなし1
FLOAT(6) VAR NUM4 : SINGLE2
VAR NUM4 : F_FLOAT3、4
VAR NUM4 : S_FLOAT5
FLOAT(25) VAR NUM4 : DOUBLE2
VAR NUM4 : G_FLOAT3
VAR NUM4 : D_FLOAT4
VAR NUM4 : T_FLOAT5
REAL VAR NUM4 : SINGLE2
VAR NUM4 : F_FLOAT3、4
VAR NUM4 : S_FLOAT5
DOUBLE PRECISION VAR NUM4 : DOUBLE2
VAR NUM4 : G_FLOAT3
VAR NUM4 : D_FLOAT4
VAR NUM4 : T_FLOAT5
DATE DATEの解釈に依存6
DATE ANSI 同等のOpenVMSなし7
DATE VMS SQL_DATE_VMS = RECORD
L0 : INTEGER;
L1 : INTEGER;
END;
TIME 同等のOpenVMSなし7
TIMESTAMP 同等のOpenVMSなし7
INTERVAL DAY TO SECOND 同等のOpenVMSなし7、8
LIST OF BYTE VARYING サポートなし9


1Pascalでは、パック10進数、数値またはスケール付き整数の各データ型はサポートされません。これらのデータ型で定義されている列をデータベースから取得するには、Pascalでサポートされているデータ型で仮パラメータを宣言し、SQLモジュール・プロシージャ文でこれらの仮パラメータを参照します。SQLで列内のデータが仮パラメータのデータ型に変換されます。
2SQLモジュール・プロセッサのコマンドラインの/FLOAT修飾子または/[NO]G_FLOAT修飾子が、Pascalのコンパイルのそれと一致している必要がある場合。
3SQLモジュール・プロセッサのコマンドラインで/FLOAT=G_FLOATが指定されている場合。
4SQLモジュール・プロセッサのコマンドラインで/FLOAT=D_FLOATが指定されている場合。
5SQLモジュール・プロセッサのコマンドラインで/FLOAT=IEEE_FLOATが指定されている場合。
6SQLでは、SQLモジュール・ファイル内でDEFAULT DATE FORMAT SQL92を指定して定義環境を変更しないかぎり、修飾されていないDATEデータ型はデフォルトでDATE VMSとして解釈されます。
7DATE VMS以外では、日時データ型の長さと書式はOracle Rdbで使用するために予約されています。ホスト・プログラムでは、表4-2に示されているデータ型を使用してください。
8INTERVALデータ型には、他に12個の修飾子の組合せがあります。表2-9を参照してください。
9モジュール言語では、仮パラメータのデータ型としてLIST OF BYTE VARYINGはサポートされません。ただし、8バイトの文字列を使用して、セグメント化された文字列識別子、リストの先頭要素のポインタを取得できます。リストの個別要素の値を取得するには、CHARデータ型またはVARCHARデータ型のホスト言語変数を使用します。
10文字長およびモジュール言語の詳細は、第3.3節を参照してください。
11セッションのデフォルト・キャラクタ・セットおよび各国語キャラクタ・セットがDEC_MCSであると想定しています。

表3-10は、SQL仮パラメータに対するPL/I宣言を示しています。

表3-10 SQL仮パラメータのデータ型に対するPL/I宣言
SQL仮パラメータのデータ型 互換性のあるPL/Iのパラメータ宣言9
CHAR(10) DCL STR1 CHAR(10);
CHAR(10) CHARACTER SET KANJI DCL STR1 CHAR(20);8
NCHAR(10) DCL STR1 CHAR(10);8
VARCHAR(80) DCL STR2 CHAR(80) VAR;
VARCHAR(80)
CHARACTER SET KANJI
DCL STR2 CHAR(160) VAR;8
NCHAR VARYING(80) DCL STR2 CHAR(80) VAR;8
LONG VARCHAR DCL STR3 CHAR(16383) VAR;
TINYINT(2)
TINYINT
サポートなし1
FIXED BINARY(7);
SMALLINT(2)
SMALLINT
サポートなし1
DCL NUM1 BIN FIXED(15);
INTEGER(2)
INTEGER
サポートなし1
DCL NUM2 BIN FIXED(31);
BIGINT(2)
BIGINT
サポートなし1
サポートなし1
DECIMAL(4)
DECIMAL(18,2)
DCL NUM3 FIXED(4) DEC;
DCL NUM3 FIXED(18,2) DEC;
NUMERIC(2)
NUMERIC(18,2)
DCL NUM4 PIC 'S(4)9';2
DCL NUM4 PIC 'S(16)9V99';2
FLOAT(6)
FLOAT(25)
DCL NUM5 BIN FLOAT(24);3
DCL NUM5 BIN FLOAT(53);3
REAL DCL NUM5 BIN FLOAT(24);3
DOUBLE PRECISION DCL NUM5 BIN FLOAT(53);3
DATE DATEの解釈に依存4
DATE ANSI 同等のOpenVMSなし5
DATE VMS DECLARE 1 SQL_DATE_VMS,
2 L0 BIN FIXED(31);
2 L1 BIN FIXED(31);
TIME 同等のOpenVMSなし5
TIMESTAMP 同等のOpenVMSなし5
INTERVAL DAY TO SECOND 同等のOpenVMSなし5、6
LIST OF BYTE VARYING サポートなし7


1PL/Iでは、スケール付き整数またはBIGINTの各データ型はサポートされません。これらのデータ型で定義されている列をデータベースから取得するには、PL/Iでサポートされているデータ型で仮パラメータを宣言し、SQLモジュール・プロシージャ文でこれらの仮パラメータを参照します。SQLで列内のデータが仮パラメータのデータ型に変換されます。
2このデータ型は記述子で渡さないでください。
3SQLモジュール・プロセッサのコマンドラインの/FLOAT修飾子または/[NO]G_FLOAT修飾子は、PL/Iのコンパイルのそれと一致している必要があります。
4SQLでは、SQLモジュール・ファイル内でDEFAULT DATE FORMAT SQL92を指定して定義環境を変更しないかぎり、修飾されていないDATEデータ型はデフォルトでDATE VMSとして解釈されます。
5DATE VMS以外では、日時データ型の長さと書式はOracle Rdbで使用するために予約されています。ホスト・プログラムでは、表4-2に示されているデータ型を使用してください。
6INTERVALデータ型には、他に12個の修飾子の組合せがあります。表2-9を参照してください。
7モジュール言語では、仮パラメータのデータ型としてLIST OF BYTE VARYINGはサポートされません。ただし、8バイトの文字列を使用して、セグメント化された文字列(リスト)識別子、リストの先頭要素のポインタを取得できます。リストの個別要素の値を取得するには、CHARデータ型またはVARCHARデータ型のホスト言語変数を使用します。
8文字長およびモジュール言語の詳細は、第3.3節を参照してください。
9セッションのデフォルト・キャラクタ・セットおよび各国語キャラクタ・セットがDEC_MCSであると想定しています。

使用方法

SQLモジュール言語では、次の3種類のAdaパッケージがサポートされています。

SQL_SQLCAパッケージでは、SQLCA構造体が定義されています。また、SQL_SQLCODEパッケージでは、SQLCODE値のリテラル定義が含まれています。

注意

Adaのリテラルには、ASCII文字のみが含まれている必要があります。

ホスト言語変数は、直接宣言したり、SQL_STANDARD Adaパッケージをコールして宣言できます。

ANSI/ISO SQL規格に準拠する必要がある場合は、SQL_STANDARD Adaパッケージを使用する必要があります。このパッケージにより、ANSI規格でサポートされているデータ型が定義されます。このパッケージを使用するには、最初にSYS$LIBRARY:SQL$STANDARD.ADAファイルを独自のAdaライブラリにコピーし、次にパッケージをコンパイルします。

SQL_STANDARDパッケージにより、次のANSI規格のデータ型が宣言されます。

SQLCODE_TYPEデータ型には、3つのサブタイプNOT_FOUND、INDICATOR_TYPEおよびSQL_ERRORが含まれます。

Adaをソース言語として使用してSQLモジュールをコンパイルすると、Oracle RdbではSQLモジュール内のすべてのプロシージャに対するAda宣言を含むAdaパッケージが生成されます。各ルーチンの宣言の一部は、各パラメータの宣言です。これらのパラメータは、SQL_STANDARDパッケージ内のデータ型を使用して宣言されます。

生成されたパッケージを利用するには、ホスト言語プログラムでAdaのWITH句を使用する必要があります。生成されたパッケージは、SQLモジュールと同じ名前です。

生成されたパッケージを利用するには、ホスト言語プログラムをコンパイルする前にSQLモジュールをコンパイルする必要があります。ACS LINKを使用するときは、まずAdaソース・プログラムのオブジェクト・ファイル、次にSQLモジュールによって作成されたオブジェクト・ファイル、その後にSQL$USERなど、他に必要なライブラリを指定します。


例1: 生成されたAdaパッケージを使用したSQLモジュール・ファイルのコンパイル


MODULE MY_MODULE (1)
LANGUAGE ADA
AUTHORIZATION RDB$DBHANDLE

DECLARE ONE SCHEMA FILENAME personnel_one
DECLARE TWO SCHEMA FILENAME personnel_two
   .
   .
   .
PROCEDURE COUNT
    SQLCODE
    THE_COUNT INT;

    SELECT COUNT(DISTINCT EMPLOYEE_ID)
        INTO THE_COUNT
        FROM ONE.EMPLOYEES;