表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. |
VARCHAR(80) CHARACTER SET KANJI |
01 STR2 CHARACTER SET KANJI. |
NCHAR VARYING(80) |
01 STR2. |
LONG VARCHAR |
01 STR3. |
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 |
TIME | 同等のOpenVMSなし3 |
TIMESTAMP | 同等のOpenVMSなし3 |
INTERVAL DAY TO SECOND | 同等のOpenVMSなし3、4 |
LIST OF BYTE VARYING | サポートなし5 |
表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 |
表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 |
表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 |
SQLモジュール言語では、次の3種類のAdaパッケージがサポートされています。
- SQL_STANDARD
- SQL_SQLCODE
- SQL_SQLCA
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規格のデータ型が宣言されます。
- CHAR
- SMALLINT
- INT
- REAL
- DOUBLE_PRECISION
- SQLCODE_TYPE
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;