- 浏览: 1551855 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
https://www.microfocus.co.jp/manuals/VisCob2010R2/BKDBDBDTYP.html
SQLデータ型
SQL データ型は、COBOL で使用されるデータ形式と異なります。
SQL には一連の標準データ型がありますが、実際の実装状況はデーベースによって異なり、これらのデータ型をすべて実装するデータベースはほとんどありません。
データ型の変換
COBOL プログラム内では、ホスト変数は COBOL プログラム変数としてのみでなく、SQL データベース変数としても機能するため、プリプロセッサにより COBOL データ形式を適切な SQL データ型に変換したり、マップしたりする必要があります。つまり、プリプロセッサが COBOL データ形式を正しい SQL データ型にマップするように、ホスト変数を正しい COBOL PICTURE 句で宣言する必要があります。これを行うには、接続するデータソースで使用される SQL データ型を把握しておくことが必要です。
以降では、さまざまな SQL データ型と、直接それらにマップするホスト変数の宣言方法について説明します。
COBSQL プリプロセッサ
COBSQL で Sybase、Informix、または Oracle を使用している場合は、データベースエンジンで変換の一種を行って、COBOL データ形式からデータベースのデータ型にデータを変換できます。通常、数字または整数データ形式のホスト変数は、次のように定義します。
PIC S9(..)..COMP..
文字またはテキストデータ形式は、次のように定義します。
PIC X(...).
Oracle と Sybase では、データベースデータ型を特定のホスト変数に定義できます。これは、より複雑なデータ型が使用される場合に便利です。
Oracle
Oracle では、次のように記述します。
EXEC SQL BEGIN DECLARE SECTION END-EXEC. * * データ項目を Oracle データ型の DISPLAY として定義します。 * 01 emp-comm pic s9(6)v99 DISPLAY SIGN LEADING SEPARATE * EXEC SQL VAR emp-comm IS DISPLAY(8,2) END-EXEC. EXEC SQL END DECLARE SECTION END-EXEC.
Sybase
Sybase では、次のように記述します。
EXEC SQL BEGIN DECLARE SECTION END-EXEC. * * データ項目を Sybase 固有のデータ型として定義します。 * 01 money-item CS-MONEY. * EXEC SQL END DECLARE SECTION END-EXEC.
ホスト変数のデータベース型定義の詳細は、各データベースベンダが提供している COBOL プリコンパイラマニュアルを参照してください。
Informix
Informix では、さまざまなデータ型を操作するために呼び出すことができるシステムルーチンが多数提供されています。これらのルーチンの詳細は、『Programming with INFORMIX-ESQL/COBOL』マニュアルを参照してください。
整数データ型
TINYINT
TINYINT は、SQL の 1 バイトの整数データ型です。COBOL では次のように宣言されます。
PIC S9(2) COMP-5.
DB2
DB2 では TINYINT データ型をサポートしていません。
COBSQL
Sybase では、TINYINT ホスト変数の使用をサポートしています。Sybase では次のように定義されます。
03 tinyint1 PIC S9(2) COMP-5. 03 tinyint2 PIC S9(2) COMP. 03 tinyint3 PIC S9(2) BINARY.
これらは、Sybase データ型 TINYINT にマップされます。
OpenESQL
SQL(DBMAN=ODBC) 指令でコンパイルする場合は、OpenESQL では TINYINT データ型をサポートしていません。かわりに SMALLINT を使用してください。
SMALLINT
SMALLINT は、SQL の 2 バイトの整数データ型です。COBOL では、BINARY、COMP、COMP-X、COMP-5、または COMP-4 の用途で宣言されます。
たとえば、次の定義はすべて、ホスト変数が直接 SMALLINT データ型にマップされます。
03 shortint1 PIC S9(4) COMP. 03 shortint2 PIC S9(4) BINARY. 03 shortint3 PIC X(2) COMP-5. 03 shortint4 PIC S9(4) COMP-4. 03 shortint5 PIC 9(4) USAGE DISPLAY. 03 shortint6 PIC S9(4) USAGE DISPLAY.
OpenESQL
- OpenESQL では現在、符号付き SMALLINT をサポートしていますが、符号なし SMALLINT はサポートしていません。
- 最も効率よくアクセスするためには、SMALLINT を COMP-5 として宣言する必要があります。
COBSQL - Oracle
Oracle では、ホスト変数を shortint1、shortint2、または次のように定義するのが最良の方法です。
03 shortint7 PIC S9(4) COMP-5.
これらは、Oracle データ型 NUMBER(38) にマップされます。
COBSQL - Sybase
Sybase では、shortint3 以外はすべて受け入れられます。使用できる方法は、次のとおりです。
03 shortint7 PIC S9(4) COMP-5.
これらは、Sybase データ型 SMALLINT にマップされます。
COBSQL - Informix
Informix では、ホスト変数を shortint1、shortint2、または次のように定義するのが最良の方法です。
03 shortint7 PIC S9(4) COMP-5.
これらは、Informix データ型 SMALLINT にマップされます。
INT
INT は、SQL の 4 バイトの整数データ型です。COBOL では、BINARY、COMP、COMP-X、COMP-5、または COMP-4 の用途で宣言されます。
次の定義は、ホスト変数を直接 INT データ型にマップされます。
03 longint1 PIC S9(9) COMP. 03 longint2 PIC S9(9) COMP-5. 03 longint3 PIC X(4) COMP-5. 03 longint4 PIC X(4) COMP-X. 03 longint5 PIC 9(9) USAGE DISPLAY. 03 longint6 PIC S9(9) USAGE DISPLAY.
OpenESQL
- 現在 OpenESQL は、符号付き INT をサポートしていますが、符号なし INT はサポートしていません。
- 最も効率よくアクセスするためには、INT を COMP-5 として宣言する必要があります。
COBSQL - Oracle
Oracle では、整数型のホスト変数を longint1、longint2、または次のように定義するのが最良の方法です。
03 longint7 PIC S9(9) COMP-5.
これらは、Oracle データ型 NUMBER(38) にマップされます。
COBSQL - Sybase
Sybase では、longint3 以外はすべて受け入れられます。使用できる方法は、次のとおりです。
03 longint7 PIC S9(9) COMP-5.
これらは、Sybase データ型 INT にマップされます。
COBSQL - Informix
Informix では、整数型のホスト変数を longint1、longint2、または次のように定義するのが最良の方法です。
03 longint7 PIC S9(9) COMP-5.
これらは、Informix データ型 INT にマップされます。
BIGINT
BIGINT は、SQL の 8 バイトの整数データ型です。COBOL では次のように宣言されます。
PIC S9(18) COMP-3.
OpenESQL
OpenESQL では、ホスト変数として使用される COBOL データ項目に S9(18) という最大サイズをサポートして、SQL データ型 BIGINT からマップされた値を保持します。ただし、BIGINT データ型は、PIC S9(18) データ項目の最大値以上の値を格納できます。そのため、データ切り捨てに対するコード検査が必要です。
DB2
BIGINT データ型は、DB2 UDB V6.1 以降でサポートされます。
COBSQL
Oracle、Informix、および Sybase では、BIGINT をサポートしていません。
文字データ型
CHAR
固定長文字列 (CHAR) は、ドライバによって最大長が定義された SQL データ型です。COBOL では PIC X(n) と宣言します。n は、1 から最大長までの整数です。
たとえば、次のように記述します。
03 char-field1 pic x(5). 03 char-field2 pic x(254).
COBSQL
これは、Oracle データ型 CHAR(n)、Sybase データ型 CHAR(n)、および Informix データ型 CHAR(n) にマップします。Oracle または Sybase の場合に、サポートされる固定長文字列の最大長は 255 バイトです。Informix の場合に、サポートされる固定長文字列の最大長は 32KB です。
DB2
これは、DB2 データ型 CHAR にマップされます。サポートされる固定長文字列の最大長は 254 バイトです。254 バイトを超える長さの文字列が必要な場合は、VARCHAR フィールドを使用してください。
VARCHAR
OpenESQL
OpenESQL を使用する場合は、長さフィールドを COMP-5 として宣言する必要があります。
OpenESQL および DB2
可変長文字列 (VARCHAR) は、SQL データ型です。COBOL では、次の 2 通りで宣言できます。
- 固定長文字列 (PIC X(n)).
- レベル-49 の基本項目 2 つのみを含む集団項目。最初の項目は、2 バイトのフィールドで有効な文字列の長さを示す COMP または COMP-5 の用途で宣言します。もう 1 つの項目は PIC X(n) データ形式で宣言し、実際のデータを格納します。n は、整数です。
次に宣言例を示します。
03 varchar1. 49 varchar1-len pic 9(4) comp. 49 varchar1-data pic x(200). 03 Longvarchar1. 49 Longvarchar1-len pic 9(4) comp-5. 49 Longvarchar1-data pic x(30000).
SQL 文では、集団名を参照する必要があります。
SQL の CHAR、VARCHAR、または LONG BARCHAR データ型にコピーされたデータが、これらのデータ型に定義された長さを超える場合には、データが切り捨てられ、SQLCA データ構造体の SQLWARN1 フラグが設定されます。また、定義されたデータ長より短い文字列には、受け取った CHAR データ型に空白文字が付加されます。
COBSQL - Oracle
Oracle では、ホスト変数は Oracle キーワード VARYING を使用して定義されます。次に使用例を示します。
EXEC SQL BEGIN DECLARE SECTION END-EXEC. 01 USERNAME PIC X(20) VARYING. EXEC SQL END DECLARE SECTION END-EXEC.
Oracle は、データ項目 USERNAME を次のような集団項目に展開します。
01 USERNAME 02 USERNAME-LEN PIC S9(4) COMP-5. 02 USERNAME-ARR PIC X(20).
COBOL コード内では、USERNAME-LEN または USERNAME-ARR のどちらかを参照する必要がありますが、SQL 文内では集団名 USERNAME を使用する必要があります。次に例を示します。
move "SCOTT" to USERNAME-ARR. move 5 to USERNAME-LEN. exec sql connect :USERNAME identified by :pwd using :db-alias end-exec.
これは Oracle データ型 VARCHAR(n) または VARCHAR2(n) にマップされます。非常に長い文字項目については、Oracle はデータ型 LONG を提供しています。
COBSQL - Sybase
Sybase では、ホスト変数を PIC X(n) PICTURE 句を使用して宣言する必要があります。これは、Sybase プリコンパイラが、VARCHAR SQL データ型を処理する集団項目の使用をサポートしないためです。
これらは、Sybase データ型 VARCHAR(n) にマップされます。
COBSQL - Informix
Informix では、ホスト変数を PIC X(n) PICTURE 句を使用して宣言する必要があります。これは、Informix プリコンパイラが、VARCHAR SQL データ型を処理する集団項目の使用をサポートしていないためです。
これらは、Informix データ型 VARCHAR(n) にマップされます。VARCHAR フィールドの最大長は、使用している Informix のバージョンによって異なります。VARCHAR データ項目の詳細は、『Informix SQL ガイド』のマニュアルを参照してください。
Unicode
OpenESQL では、PIC N(n) フィールドを使用して Unicode データ型をサポートします。詳細は、『OpenESQL』の章にある『OpenESQL の Unicode サポート』およびヘルプトピックの『SQL/COBOL データ型マッピング』を参照してください。
概数データ型
32 ビット SQL 浮動小数点データ型の REAL は、COBOL では COMP-1 として宣言します。
64 ビット SQL 浮動小数点データ型の FLOAT と DOUBLE は、COBOL では COMP-2 として宣言します。
次に宣言例を示します。
01 float1 usage comp-2.
OpenESQL
OpenESQL では埋め込み SQL の単精度浮動小数点数がサポートされないため、32 ビットおよび 64 ビットの浮動小数点データ型は COMP-2 COBOL データ項目にマップされます。
DB2
- DB2 ユニバーサルデータベースでは、単精度浮動小数点数 (REAL) を COMP-1 として、倍精度浮動小数点数 (FLOAT または DOUBLE) を COMP-2 としてサポートします。
- DB2 バージョン 2.1 では、倍精度浮動小数点数 (FLOAT または DOUBLE) のみ COMP-2 としてサポートします。
COBSQL - Oracle
Oracle は、COMP-1 データ項目および COMP-2 データ項目の使用をサポートしています。これらはどちらも、Oracle データ型 NUMBER にマップされます。
COBSQL - Sybase
Sybase は、COMP-1 データ項目および COMP-2 データ項目の使用をサポートしています。COMP-1 データ項目は、Sybase データ型 REAL にマップされます。COMP-2 データ項目は、Sybase データ型 FLOAT にマップされます。
COBSQL - Informix
Informix は COMP-1 データ項目と COMP-2 データ項目のどちらもサポートしていません。Informix は、COBOL の固定数字データ項目 PIC S9(m)V9(n) のみサポートしています。Informix では、FLOAT カラムと SMALLFLOAT SQL カラムがこの形式に変換されます。
真数データ型
真数データ型 DECIMAL および NUMERIC には、ドライバで指定された精度と位取りで値を格納できます。
COBOL では、これらは COMP-3、PACKED-DECIMAL、または NUMERIC USAGE DISPLAY として宣言されます。
次に宣言例を示します。
03 packed1 pic s9(8)v9(10) usage comp-3. 03 packed2 pic s9(8)v9(10) usage display.
COBSQL - Oracle
Oracle では、これらはデータ型 NUMBER(p,s) にマップされます。Sybase では、NUMBER(p,s) または DECIMAL(p,s) にマップされます。Informix では、DECIMAL(p,s) または MONEY(p,s) にマップされます。
- NUMERIC データ型と DECIMAL データ型の相違については、『Sybase Transact-SQL ユーザーズ・ガイド』の『データ型の作成と使用方法』の章を参照してください。
- DECIMAL データ型と MONEY データ型の相違については、『Informix SQL ガイド』の『データ型』の章を参照してください。
日時データ型
COBOL には、日付データや時刻データ専用のデータ形式はありません。そのため、SQL の日付カラムや時刻カラムは文字列に変換されます。
SQL タイムスタンプ値に対して COBOL で出力するホスト変数を PIC X(n) と定義した場合には、日付と時刻は yyyy-mm-dd hh:mm:ss.ff の形式で指定されます。この場合には、n は 19 以上の整数です。また、小数部の桁数はドライバで指定されます。
たとえば、次のようになります。
1994-05-24 12:34:00.000
OpenESQL
OpenESQL は、どのリレーションナルデータベースにもアクセスでき、各データベースには日付や時刻を指定するさまざまな方法があるため、通常は、入力ホスト変数で日付や時刻を指定します。この方法を使用する場合は、プログラムのコンパイル時に SQL 指令で DETECTDATE オプションを使用する必要があります。
- 日付を指定するには、日付を {dyyyy-mm-dd} の形式でホスト変数に転記します。
- 時刻を指定するには、時刻を {thh:mm;ss} の形式でホスト変数に転記します。
- 日付と時刻を指定するには、日付と時刻を {tsyyyy-mm-dd hh:mm:ss} の形式でホスト変数に転記します。
たとえば、次のように記述します。
$set sql(dbman=odbc, detectdate) 01 Hire-Date pic x(26). . . . move "{d'1965-11-02'} to Hire-Date exec sql insert into emp (HireDate) values (:Hire-Date) end-exec
DB2
DB2 では、TIMESTAMP データ型の最大長は 26 文字です。
COBSQL
Oracle
Oracle データ項目には一意なデータ定義があり、これらのデータ項目を COBOL プログラム内で使用したときに、日付、時刻および日時フィールドを変換する関数があります。これらの関数は、次のとおりです。
- TO_CHAR
Oracle の日付形式を文字列に変換します。
- TO_DATE
文字列を Oracle の日付に変換します。
どちらの関数も変換する項目を引数にとり、その後にデータ項目に適用される日付、時刻、または日時マスクが続きます。次に例を示します。
exec sql select ename, TO_CHAR(hiredate, 'DD-MM-YYYY') from emp into :ename, :hiredate where empno = :empno end-exec. exec sql insert into emp (ename, TO_DATE(hiredate, 'DD-MM-YYYY')) values (:ename, :hiredate) end-exec.
これは、Oracle データ型 DATE にマップされます。DATE データ型の詳細は、Oracle の『SQL 言語リファレンスマニュアル』を参照してください。このマニュアルでは、Oracle SQL 文内でのこれらの関数の使用方法について詳しく説明されています。
Sybase
Sybase には、データ型の形式を変換する、convert という名前の関数があります。前述の Oracle 例を使用する場合には、SQL 構文は次のようになります。
exec sql select ename, convert(varchar(12) hiredate, 105) from emp into :ename, :hiredate where empno = :empno end-exec. exec sql insert into emp (ename, hiredate) values (:ename, convert(datetime :hiredate, 105) end-exec.
これは、Sybase データ型 SMALLDATETIME または DATETIME にマップされます。SMALLDATETIME データ型と DATETIME データ型の相違については、『Sybase Transact-SQL ユーザーズ・ガイド』の『データ型の作成と使用方法』の章を参照してください。
Sybase の convert 関数の詳細は、Sybase の『SQL Server Reference Manual: Volume 1 Commands, Functions and Topics』を参照してください。
Informix
Informix では、日付はユリウス形式または mm/dd/yyyy 形式のどちらかを要求します。
- ユリウス日付を使用する場合は、フィールドを PIC S9(9) COMP として定義してください。
-
mm/dd/yyyy 形式で日付を表す場合は、次のようにします。
- COBOL フィールドを PIC X(10) として定義します。
- DATE_TYPE 関数を使用します。
Informix に日付を渡す方法については、『INFORMIX-ESQL/COBOL Programmer's Manual』を参照してください。
バイナリデータ型
OpenESQL
SQL の BINARY、VARBINARY、および IMAGE データは、COBOL では PIC X (n) フィールドとして表されます。データの変換は実行されません。データベースからデータを取り込むときに、データのサイズが格納先の COBOL フィールドよりも大きい場合は、フィールドに格納できない部分のデータは切り捨てられ、SQLCA データ構造体の SQLWARN1 フィールドに「W」が設定されます。また、データ長が COBOL フィールドよりも短い場合は、フィールドの空き部分に NULL 文字 (x"00") が付加されます。BINARY、VARBINARY、または LONG VARBINARY カラムにデータを挿入するには、動的 SQL 文を使用します。
DB2
DB2 では、BINARY を表すには CHAR FOR BIT DATA、VARBINARY を表すには VARCHAR(n) FOR BIT DATA、LONG VARBINARY を表すには LONG VARCHAR FOR BIT DATA を使用します。IBM ODBC ドライバを使用している場合は、IBM 互換データ型のかわりに、BINARY、VARBINARY、および LONG VARBINARY が戻されます。IMAGE データ型は、BLOB で表されます。DB2 では、非常に大きいカラム (最大 2GB) を定義するために、LOB (文字型ラージオブジェクト、バイナリ型ラージオブジェクトまたはグラフィック型ラージオブジェクト) を使用します。これらのデータ型には静的 SQL を使用できます。
COBSQL
Oracle
Oracle では、バイナリデータをサポートしています。Oracle でのバイナリデータと文字データの相違は、文字データには文字符号系変換が行われますが、バイナリデータには何も行われないという点です。
これらの Oracle データ型は RAW と LONG RAW の 2 つです。RAW および LONG RAW の使用には制約があります。詳細は、Oracle のマニュアルを参照してください。
Sybase
Sybase には、BINARY、VARBINARY、および IMAGE の 3 つのバイナリデータ型があります。IMAGE は、複雑なデータ型であるため、ホスト変数は CS-IMAGE として定義できます。たとえば、次のように記述します。
EXEC SQL BEGIN DECLARE SECTION END-EXEC. * * データ項目を Sybase 固有のデータ型として定義します。 * 01 image-item CS-IMAGE. * EXEC SQL END DECLARE SECTION END-EXEC.
注:Sybase データ型 BINARY、VARBINARY、および IMAGE の使用については、『Sybase Transact-SQL ユーザーズ・ガイド』の『データ型の作成と使用方法』の章を参照してください。
Informix
Informix では、TEXT と BYTE の 2 種類のバイナリデータ項目がサポートされます。これらのデータ型には実際のデータは格納されません。これらは、ファイル名です。このため、COBOL の対応項目は PIC X(n) になります。
TEXT および BYTE データ項目の詳細は、『Informix SQL ガイド』を参照してください。
OpenESQL SQL TYPE
OpenESQL を使用しない場合や、他の ESQL プリプロセッサとの互換性を維持するには、ここを飛ばしてもかまいません。それ以外の場合は、ここで説明する SQL TYPE を使用することをお奨めします。
日付 / 時刻のデータやバイナリデータに関連する SQL データを処理するときに、通常の COBOL ホスト変数を使用すると複雑になったり、これまでの方法で可変長文字列のデータを処理すると問題になったりする可能性があることが確認されています。このため、OpenESQL を拡張して、SQL TYPE 関数により、SQL テーブルに格納されるデータ型により密接に影響を与えるホスト変数をより簡単に宣言できるようにしました。これにより、動的 SQL 構文よりも静的 SQL 構文でより多くのアプリケーションを作成できます。
次のデータ型は、SQL TYPE 関数でホスト変数として使用できます。
- BINARY
- CHAR-VARYING
- DATE
- DATE-RECORD
- LONG-VARBINARY
- LONG-VARCHAR
- TIME
- TIME-RECORD
- TIMESTAMP
- TIMESTAMP-RECORD
- VARBINARY
BINARY
構文:
SQL [TYPE] [IS] BINARY(n)
例:
01 hv-name SQL TYPE IS BINARY(n)
生成後
01 hv-name pic x(n).
CHAR-VARYING
構文:
SQL [TYPE] [IS] CHAR-VARYING(n)
一般規則:
- CHAR-VARYING データは、OpenESQL に SQL_VARCHAR として渡されます。
- データがデータソースに送信されると、値がすべて空白文字の場合は最初の空白文字以外の後続の空白文字は削除されます。
- データソースから取り込んだ値には空白文字が付加されます。
例:
01 hv-name SQL TYPE IS CHAR-VARYING(n)
生成後
01 hv-name pic x(n).
DATE
構文:
SQL [TYPE] [IS] DATE
一般規則:
- DATE データは、YYYY-MM-DD の形式である必要があります。
例:
01 hv-name SQL TYPE IS DATE
生成後
01 hv-name pic x(10).
DATE-RECORD
構文:
SQL [TYPE] [IS] DATE-RECORD
例:
01 hv-name SQL TYPE IS DATE-RECORD
生成後
01 hv-name. 03 hv-name-year pic s9(4) comp-5. 03 hv-name-month pic 9(4) comp-5. 03 hv-name-day pic 9(4) comp-5.
TIMESTAMP および TIMESTAMP-RECORD
OpenESQL は、TIMESTAMP カラムデータをより簡単に処理できるように TIMESTAMP および TIMESTAMP-RECORD SQL TYPE をサポートします。TIMESTAMP および TIMESTAMP-RECORD は、固定された日付時刻形式に編成されたデータが必要になります。すべてのタイムスタンプ情報を含む作業場所内の単一のデータ項目として生成するために TIMESTAMP を使用します。次に示すタイムスタンプの各要素用のデータ項目を含む集団項目として生成するために TIMESTAMP-RECORD を使用します。
- 年
- 月
- 日
- 時
- 分
- 秒
- 小数部の秒
構文:
書き方 1 - TIMESTAMP
SQL [TYPE] [IS] TIMESTAMP
書き方 2 - TIMESTAMP-RECORD
SQL [TYPE] [IS] TIMESTAMP-RECORD
一般規則:
- TIMESTAMP データは、YYYY-MM-DD HH:MM:SS の形式である必要があります。
- TIMESTAMP-RECORD ホスト変数を使用してデータを挿入するには、生成されたフィールド名内で有効なデータを渡す必要があります。
- 小数部の秒は、9 桁までサポートされます。ただし、この値は、DBMS や ODBC ドライバによって異なります。たとえば、Oracle および DB2 UDB では、6 桁までサポートされます。Microsoft SQL Server では、3 桁までです。詳細は、DBMS または ODBC ドライバのマニュアルを参照してください。
- 小数部のデータは左桁寄せで渡され、データ項目の定義された桁数に含まれている必要があります。たとえば、678 の小数部の秒値は、9 桁で定義されたデータ項目に 678000000 として渡されます。
- SELECT 文または FETCH 文からデータが戻される場合は、小数部の秒は右桁寄せになります。
- Oracle を使用している場合は、国や地域によって日付時刻形式が異なるため、Oracle の NLS_TIMESTAMP_FORMAT パラメータで定義します。OpenESQL で定義された形式は、NLS_TIMESTAMP_FORMAT で指定された値と一致する必要があります。
注:OpenESQL 形式と Oracle の NLS_TIMESTAMP_FORMAT パラメータ値と一致しない場合は、Oracle はエラーメッセージを生成します。NLS_TIMESTAMP_FORMAT の値を確認するためには、Oracle の SQLPLUS ユーティリティを使用します。具体的な操作は次のとおりです。
- OpenESQL で定義している値を NLS_TIMESTAMP_FORMAT 環境変数に設定します。
- PIC X(29) のホスト変数を準備し、NLS_TIMESTAMP_FORMAT で定義された形式内の文字列を渡します。
- 適切な形式を指定するために INSERT 文の TO_TIMESTAMP 関数を使用します。次に例を示します。
exec sql insert into mf_datetime (col_a ,col_date ,col_timestamp ) values (:mf-col-a ,TO_DATE(:mf-col-date, 'YYYY-MM-DD') ,TO_TIMESTAMP(:mf-col-timestamp, 'YYYY-MM-DD HH24:MI.SS.FF') ) end-exec
SQLPLUS ユーティリティおよび NLS_TIMESTAMP_FORMAT パラメータの詳細は、Oracle のマニュアルを参照してください。
- SQL Server が日付や時刻の値を格納する場合は、桁によって小数部の最終桁の上下で丸めが発生する可能性があります。次に例を示します。
渡される値 SQL Server から返される値 01/01/98 23:59.59.999 1998-01-02 00:00:00.000 01/01/98 23:59.59.995 1998-01-01 23:59:59.997 01/01/98 23:59.59.996 1998-01-01 23:59:59.997 01/01/98 23:59.59.997 1998-01-01 23:59:59.997 01/01/98 23:59.59.998 1998-01-01 23:59:59.997 01/01/98 23:59.59.992 1998-01-01 23:59:59.993 01/01/98 23:59.59.993 1998-01-01 23:59:59.993 01/01/98 23:59.59.994 1998-01-01 23:59:59.993 01/01/98 23:59.59.990 1998-01-01 23:59:59.990 01/01/98 23:59.59.991 1998-01-01 23:59:59.990
例:
書き方 1 - TIMESTAMP
01 hv-name SQL TYPE IS TIMESTAMP
生成後
01 hv-name pic x(29).
書き方 2 - TIMESTAMP-RECORD
01 hv-name SQL TYPE IS TIMESTAMP-RECORD
生成後
01 hv-name. 03 hv-name-year pic s9(4) comp-5. 03 hv-name-month pic 9(4) comp-5. 03 hv-name-day pic 9(4) comp-5. 03 hv-name-hour pic 9(4) comp-5. 03 hv-name-min pic 9(4) comp-5. 03 hv-name-sec pic 9(4) comp-5. 03 hv-name-frac pic 9(9) comp-5.
書き方 1 および 2
ホスト変数の定義:
01 mf. 03 mf-col-a pic s9(09) comp-5. 03 mf-col-date sql type date. 03 mf-col-timestamp sql type timestamp. 03 mf-col-tsrec sql type timestamp-record. 01 ws-char-ts pic x(29).
フィールドの初期化:
move 1 to mf-col-a move "2005-03-31" to mf-col-date move "2005-04-15 13:45:56.456123" to mf-col-timestamp move 2005 to mf-col-tsrec-year move 04 to mf-col-tsrec-month move 16 to mf-col-tsrec-day move 16 to mf-col-tsrec-hour move 55 to mf-col-tsrec-min move 58 to mf-col-tsrec-sec move 678000000 to mf-col-tsrec-frac
INSERT 文:
exec sql insert into mf_datetime (col_a ,col_date ,col_timestamp ) values (:mf-col-a ,:mf-col-date ,:mf-col-timestamp ) end-exec
发表评论
-
(转)Determining equivalent SQL and COBOL data types
2011-08-24 18:01 1496http://publib.boulder.ibm ... -
(转)grep Programs and Regular expressions
2011-08-10 13:10 1228http://ss64.com/bash/grep-r ... -
(转)find:根据指定条件查找文件
2011-08-10 11:34 1039http://man.ddvip.com/ ... -
(转)[红旗] 手动可以执行,加入crontab 就不行了
2011-07-05 13:07 1817http://bbs.chinaunix.net ... -
(转)Linux——计划任务管理
2011-07-04 15:02 1585http://hi.baidu.com/%BA%CE%B4 ... -
(转)CentOS的计划任务,Crontab安装及使用方法
2011-07-04 15:01 3109http://www.hitsword.org/re ... -
(转)Windows如何压缩tar.gz格式
2011-05-11 10:34 1281http://www.viosem.com/2008/ ... -
(转)日语的文字编码
2011-03-02 10:23 1666http://blog.csdn.net/jackyren ... -
(转)《软件工程的事实与谬论》
2010-11-04 09:57 1708http://book.group.iteye.com ... -
(转)VB6迁移到VB.NET的一些问题汇总
2010-11-03 15:02 1827http://www.cnblogs.com/ols/ar ... -
(转)《张冰Java视频教程》(struts Hibernate spring jsp J2SE)长期更新
2010-07-14 20:51 0http://www.verycd.com/topics/ ... -
(转)使用httpclient4登录百度
2010-02-26 14:45 0http://legend30g-4/article/h ... -
(转)如何一次性从Outlook Express中导出邮件
2010-01-06 13:23 5688http://hi.baidu.com/grape17/b ... -
Top Ten TPC-E by Performance
2009-10-21 14:50 1052http://www.tpc.org/tpc ... -
IBM DB2 UDB 和 SQL Server 2000
2009-10-21 14:49 1372http://www.microsoft.com/chin ... -
TCP/IP環境のPCからメインフレームを使用する
2009-10-16 11:51 0http://cap-l.sakushin-u.ac.jp:8 ... -
JP1名词解释
2009-10-10 15:17 3676http://soft.yesky.com/0/30685 ... -
Java 内存溢出的可能性汇总
2009-02-18 13:42 15791 分配的内存太小, 请使用 JVM 参数设置更大的可用内存 ... -
Java web应用内存溢出 [已结帖,结帖人:pengble]
2009-02-18 13:40 2285加为好友发送私信在线聊天 -
Of non-static ThreadLocals and memory leaks …
2009-02-05 17:06 1541Of non-static ThreadLocals and ...
相关推荐
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
ACM动态规划模板-区间修改线段树问题模板
# 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
本项目为Python语言开发的PersonRelationKnowledgeGraph设计源码,总计包含49个文件,涵盖19个.pyc字节码文件、12个.py源代码文件、8个.txt文本文件、3个.xml配置文件、3个.png图片文件、2个.md标记文件、1个.iml项目配置文件、1个.cfg配置文件。该源码库旨在构建一个用于表示和查询人物关系的知识图谱系统。
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
rtsp实时预览接口URL:/evo-apigw/admin/API/MTS/Video/StartVideo HLS、FLV、RTMP实时预览接口方式 :接口URL/evo-apigw/admin/API/video/stream/realtime 参数名 必选 类型 说明 data true string Json串 +channelId true string 视频通道编码 +streamType true string 码流类型:1=主码流, 2=辅码流,3=辅码流2 +type true string 协议类型:hls,hlss,flv,flvs,ws_flv,wss_flv,rtmp hls:http协议,m3u8格式,端口7086; hlss:https协议,m3u8格式,端口是7096; flv:http协议,flv格式,端口7886; flvs:https协议,flv格式,端口是7896; ws_flv:ws协议,flv格式,端口是7886; wss_flv:wss协议,flv格式,端口是7896; rtmp:rtmp协议,端口是1975;
Simulink永磁风机飞轮储能系统二次调频技术研究:频率特性分析与参数优化,Simulink永磁风机飞轮储能二次调频技术:系统频率特性详解及参数优化研究参考详实文献及两区域系统应用,simulink永磁风机飞轮储能二次调频,系统频率特性如下,可改变调频参数改善频率。 参考文献详细,两区域系统二次调频。 ,核心关键词: 1. Simulink 2. 永磁风机 3. 飞轮储能 4. 二次调频 5. 系统频率特性 6. 调频参数 7. 改善频率 8. 参考文献 9. 两区域系统 以上关键词用分号(;)分隔,结果为:Simulink;永磁风机;飞轮储能;二次调频;系统频率特性;调频参数;改善频率;参考文献;两区域系统。,基于Simulink的永磁风机与飞轮储能系统二次调频研究:频率特性及调频参数优化
MATLAB驱动的ASR防滑转模型:PID与对照控制算法对比,冰雪路面条件下滑移率与车速轮速对照展示,MATLAB驱动的ASR防滑转模型:PID与对照控制算法对比,冰雪路面条件下滑移率与车速轮速对照图展示,MATLAB驱动防滑转模型ASR模型 ASR模型驱动防滑转模型 ?牵引力控制系统模型 选择PID控制算法以及对照控制算法,共两种控制算法,可进行选择。 选择冰路面以及雪路面,共两种路面条件,可进行选择。 控制目标为滑移率0.2,出图显示车速以及轮速对照,出图显示车辆轮胎滑移率。 模型简单,仅供参考。 ,MATLAB; ASR模型; 防滑转模型; 牵引力控制系统模型; PID控制算法; 对照控制算法; 冰路面; 雪路面; 控制目标; 滑移率; 车速; 轮速。,MATLAB驱动的ASR模型:PID与对照算法在冰雪路面的滑移率控制研究
芯片失效分析方法介绍 -深入解析芯片故障原因及预防措施.pptx
4131_127989170.html
内容概要:本文提供了一个全面的PostgreSQL自动化部署解决方案,涵盖智能环境适应、多平台支持、内存与性能优化以及安全性加强等重要方面。首先介绍了脚本的功能及其调用方法,随后详细阐述了操作系统和依赖软件包的准备过程、配置项的自动生成机制,还包括对实例的安全性和监控功能的强化措施。部署指南给出了具体的命令操作指导,便于新手理解和执行。最后强调了该工具对于不同硬件条件和服务需求的有效应对能力,特别是针对云计算环境下应用的支持特点。 适合人群:对PostgreSQL集群运维有一定基础并渴望提高效率和安全性的数据库管理员及工程师。 使用场景及目标:本脚本能够帮助企业在大规模部署时减少人工介入时间,确保系统的稳定性与高性能,适用于各类需要稳定可靠的数据库解决方案的企业或机构,特别是在大数据量和高并发事务处理场合。 其他说明:文中还提及了一些高级功能如自动备份、流复制等设置步骤,使得该方案不仅可以快速上线而且能满足后续维护和发展阶段的要求。同时提到的技术性能数据也为用户评估其能否满足业务需求提供了直观参考。
房地产开发合同[示范文本].doc
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
工程技术承包合同[示范文本].doc
蓝桥杯开发赛【作品源码】
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
CVPR2023复现技术:多数据集验证下的YOLOX、YOLOv5及YOLOV7检测涨点助力器,CVPR2023复现实验助力检测涨点,验证了YOLOX、YOLOv5及YOLOV7在多个数据集上的有效性,cvpr2023复现,助力检测涨点,YOLOX YOLOv5 YOLOV7均有效,再多个数据集验证有效 ,cvpr2023复现; 助力检测涨点; YOLOX有效; YOLOv5有效; YOLOV7有效; 多数据集验证有效,CVPR2023复现成功:多模型检测涨点验证有效