
つい先日、ここで「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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PL/SQLカーソルの2重FORループ...
-
カーソル定義での条件分岐
-
Accessのマクロでモジュールを...
-
ODBCリンクの際にACCESSでは読...
-
callで順に実行されるプロシー...
-
重複するIDのデータを1行にま...
-
日数算出SQL
-
Statement ignored というエラー
-
SQLで部分的にGROUP BYしたいとき
-
sqlplusでヘッダーが付かない
-
キャッシュを使わずにSELECTを...
-
sqlplusのspoolで空白行出現
-
ACCESS マクロをモジュールに変...
-
PL/SQLでSPOOLさせたいのですが...
-
WHERE句の実行順序
-
PL/SQL 実行中のSID
-
Accessの数値から時間に変換す...
-
SQLserver算術オーバーフロ...
-
日付を表示形式で戻すSQL文を書...
-
今日の日付が入った行のデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PL/SQLカーソルの2重FORループ...
-
カーソル定義での条件分岐
-
Texの枠囲み調節
-
自動連番でカラムを更新したい
-
ORA-00904:無効な識別子の回避...
-
PL/SQLでのSQL文法
-
PL/SQLにて、マスタから取得し...
-
mysqlのcase文で複数の条件を指...
-
PL/SQLのOPEN cursor_name FOR...
-
PL/SQLでの配列についてetc
-
PL/SQLにてカーソル名を変数に
-
PL/SQLでカーソルを指定する方法
-
T-SQLのカーソルで
-
PL/SQL カーソルのFROM句にカー...
-
[Oracle9i]PL/SQLでFETCHしても...
-
ROW_NUMBER BY PL/SQL
-
T-SQLで
-
PL/SQLプログラムの書き方がわ...
-
PL/SQLのカーソルについて
-
処理の結果レコードがなかった...
おすすめ情報