※ ChatGPTを利用し、要約された質問です(原文:Pro*C NUMBER型のカラムにホスト変数を使用してINSERTしたいとき)
Pro*C NUMBER型でホスト変数を使用してINSERTする方法
このQ&Aのポイント
プログラムでPro*Cを使用して、NUMBER型のカラムにホスト変数を使用してINSERTする方法を知りたいです。
テーブルのカラム定義やプログラムのコードを示し、カラムC2の型が16桁のNUMBERであるため、ホスト変数hC2の型をどのように定義すればよいか教えてください。
ファイルから読み込んだデータをホスト変数hC1、hC2に代入し、INSERTする方法についても教えてください。
Pro*C NUMBER型のカラムにホスト変数を使用してINSERTしたいとき
テーブルの定義
-----------------------------------------
TableName ColmunName 型 Length
-----------------------------------------
T1 C1 VERCHAR2 20
C2 NUMBER 16(0)
-----------------------------------------
プログラム
<stdio.h>
<string.h>
<sqlca.h>
void main(void){
char statement[1024 + 1];
/* ホスト変数定義 */
EXEC SQL BEGIN DECLARE SECTION;
VERCHAR hC1;
<?????> hC2; ← ココです(^^;
/* INSERT文の定義 */
strcpy(statement, "INSERT INTO T1 (C1,C2) VALUES (?,?)");
EXEC SQL PREPARE S1 FROM :statement;
/* メイン(ループ) */
while(1)
hC1 (ファイルから読込んだ値を代入)
hC2 (ファイルから読込んだ値を代入)
EXEC SQL EXECUTE S1 USING :hC1, :hC2;
}
}
<質問>
上記のテーブルに、あるファイルから読込んだデータを、
ホスト変数hC1、hC2に代入して、
INSERTしたいのですが、
カラムC2の型がNUMBERの16桁のため、
ホスト変数hC2の型を何で定義したら良いのか
わかりません。
(ちなみに、ファイルはテキストで読込みます)
何か良い方法があるのでしょうか?
お礼
教えていただいた通りにできました。 ありがとうございます。^^
補足
おんなじコトをいま考えてました ^^; あと、ValuesのところでTO_NUMBER()するのであれば、 きっとVERCHAR型でも平気ですね^^ 早速試してみます ^^