つい先日、ここで「T-SQLのカーソルにパラメータは使えますか?」という質問をして、使えることがわかって解決したんですけど、
実際にプロシージャで使ってみると、カーソルから結果が返りません。
以下のように書いています。
CREATE PROCEDURE hoge(@param1 int) AS
DECLARE C1 CURSOR FOR
SELECT CODE_1 FROM TableA
WHERE COLUMN_1 = '0' AND COLUMN_2 = @param1
BEGIN
....
END
@param1をローカル変数に代入し、そのローカル変数をカーソルに書いても同じです。
また、カーソル定義の「@param1」をプロシージャ実行時の引数に渡していた数値に書き換えると結果は返ります。
T-SQLは初めてなもので原因が全く分かりません。
何が間違っているのでしょうか?
No.1ベストアンサー
- 回答日時:
カーソル宣言の部分だけ書かれても、そのカーソルが正しく利用されているかは判断できません。
ストアドプロシジャでカーソルを利用する、簡単な例を以下に示します。
●表定義&データ例
create table t1
(c1 int,
c2 varchar(8))
insert into t1 values(1,'A')
insert into t1 values(1,'AA')
insert into t1 values(1,'AAA')
insert into t1 values(1,'AAAA')
insert into t1 values(2,'B')
insert into t1 values(2,'BB')
insert into t1 values(2,'BBB')
●ストアドプロシジャ
create procedure sp_hoge @ic1 int as
--カーソル使用例
declare @oc1 varchar(8)
declare @oc2 varchar(8)
--カーソル宣言
declare cr1 cursor for
select * from t1 where c1=@ic1
--カーソルオープン
open cr1
--FETCH(行の取り出し)
fetch next from cr1 into @oc1,@oc2
--LOOP
while (@@fetch_status <> -1) --エラーまたはEOFでない間
begin
if (@@fetch_status <> -2) --EOFでなければ何か処理をする
begin
print @oc2
end
--FETCH(行の取り出し)
fetch next from cr1 into @oc1,@oc2
end
--カーソルクローズ
close cr1
return
go
●ストアドプロシージャ実行
exec sp_hoge 1
go
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Texの枠囲み調節
-
エクセルVBAでUserFormを起動し...
-
或るプロシージャの呼び出し元判定
-
VBA プロシージャの名前の取得
-
Accessでグローバル変数を宣言...
-
sp_executesqlを実行してもテー...
-
ストアド実行時のエラー「参照...
-
to_date使用時に発生するエラー...
-
SQL*Loaderでのsysdate使用
-
テーブルの主キーをdate型...
-
日付書式に変換でこまっています!
-
wordで文字の上に線を引きたい...
-
関数IFで、指定日付範囲のデー...
-
特定の日付が第何週目にあるか...
-
ACCESS2007インポート時の空白...
-
今日の日付が入った行のデータ...
-
OutlookVBAで作成したマクロに...
-
Accessのマクロでモジュールを...
-
キャッシュを使わずにSELECTを...
-
別のスキーマのテーブルアップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PL/SQLカーソルの2重FORループ...
-
PL/SQLでのSQL文法
-
Texの枠囲み調節
-
カーソル定義での条件分岐
-
自動連番でカラムを更新したい
-
ORA-00904:無効な識別子の回避...
-
PL/SQLのOPEN cursor_name FOR...
-
カーソルフェッチにて、最終レ...
-
文字列の置換
-
T-SQLのカーソルで
-
[Oracle9i]PL/SQLでFETCHしても...
-
PL/SQL カーソルのFROM句にカー...
-
PL/SQLでの参照
-
PL/SQLにて、マスタから取得し...
-
カーソルで集合関数を使った場...
-
カーソルループ内部でログを出力
-
【PL/SQL】LOOPした動的SQLにて...
-
PL/SQLのカーソルについて
-
PL/SQLでカーソルを指定する方法
-
ROW_NUMBER BY PL/SQL
おすすめ情報