
よろしくお願いします。
Pro*Cで作成しているのですが、カーソルの宣言時に指定するSQLをIF文で分けようとすると、
コンパイル時に「PCC-W-02332, SQLの識別子を再定義しようとしました。」が表示されます。
IFの結果がどうであれ、カーソルが取得するレイアウトが同一かつ、OPEN後の処理も同じように処理するため、できれば同一のカーソル名で行いたいです。
以下は今の状態を簡略化したプログラミングですが、
どのように対処するのが良いのでしょう。
Oracle10.2です。
よろしくお願いします。
-------------------------------------------------------
int flg;
<中略>
if ( flg == 0 ) {
EXEC SQL DECLARE curname CURSOR FOR
SELECT tbl.col1, 'flgが0です' AS col2 FROM tbl
;
} else {
EXEC SQL DECLARE curname CURSOR FOR
SELECT tbl.col1, 'flgが0以外です' AS col2 FROM tbl
;
}
EXEC SQL OPEN curname;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while(1) {
EXEC SQL FETCH rackBCCur INTO :retVals
<略>
}
-------------------------------------------------------
No.1ベストアンサー
- 回答日時:
すみません。
最近カーソル処理を書いてないんですが自分が思うにカーソル処理で帰ってくる行数は1行になるようSELECT文を書かなくてはいけなかった気がしますが。早速のご回答ありがとうございます。
よろしくお願いします。
恐らくINTOで指定する変数のことだと思います。
カーソルで抽出の定義をして(このときは複数行)、FETCHのところでそこから1行抽出し、INTOで指定した変数に値を入れます。
このとき、INTOで指定した変数には1行しか入りません。
なので、ほとんどの場合はFORやWHILEでループをして、毎行FETCHすることになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
このQ&Aを見た人はこんなQ&Aも見ています
-
カーソル定義での条件分岐
Oracle
-
引数によってwhere句を切り替える方法
Oracle
-
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
-
4
PL/SQLカーソルの2重FORループができません
Oracle
-
5
Statement ignored というエラー
Oracle
-
6
PL/SQL PLS-00103エラーについて
Oracle
-
7
Oracleで上書きImportはできますか?
その他(データベース)
-
8
【PL/SQL】FROM区に変数を使う方法
Oracle
-
9
PL/SQLのプロシージャ間でカーソル?の受渡
その他(プログラミング・Web制作)
-
10
カーソル0件の時にエラーを発生させる
Oracle
-
11
PL/SQLのコンパイルエラーについて(ignored)
Oracle
-
12
Oracle 2つのDate型の値の差を「分」で取得したい
その他(データベース)
-
13
カーソルがコミットするとクローズされてしまう。
その他(データベース)
-
14
テーブルの存在チェックについて
Oracle
-
15
ストアドプロシジャからストアドプロシジャを呼ぶには?
Oracle
-
16
単一グループのグループ関数ではありません。
Oracle
-
17
SELECTで1件のみ取得するには?
Oracle
-
18
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
19
PL/SQL内の共通関数の引数にフェッチしたレコードごと渡すのは可能?
Oracle
-
20
PL/SQL exceptionを呼び出すには?
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
処理件数を非表示にしたい
-
データ型でFloatとreal の計算...
-
カーソル0件の時にエラーを発生...
-
カーソルを使って、最終行レコ...
-
カーソルがコミットするとクロ...
-
SQL-LOADERの逆のもの
-
NVLとDECODEのスピード差
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
for whichの使い方
-
エクセルで最後の文字だけ置き...
-
EXISTSを使ったDELETE文
-
外部参照してるキーを主キーに...
-
列番号による項目の取得について
-
エクセルの関数について教えて...
-
不連続サブネットとEIGRPについて
-
IDの欠番
-
SELECT 文 GROUP での1件目を...
-
【VB.NET】日付型の列にNULLを...
-
SQLで特定の項目の重複のみを排...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カーソル0件の時にエラーを発生...
-
処理件数を非表示にしたい
-
カーソルを使って、最終行レコ...
-
データ型でFloatとreal の計算...
-
ストアドプロシージャ_カーソル...
-
クエリの実行時間の目安
-
カーソル宣言をIFで分けられま...
-
NVLとDECODEのスピード差
-
カーソルがコミットするとクロ...
-
テーブルの項目が異なるテーブ...
-
SQL-LOADERの逆のもの
-
(x 行処理されました)を表示さ...
-
Accessで処理経過を表示したい...
-
ACCESSで一括処理する方法
-
PL/SQL で continue ?
-
カーソルオープンの処理について
-
動的SQLの処理件数
-
わり算の結果が整数でも小数点...
-
SQL plus で改行
-
RDBとVSAMの比較
おすすめ情報