アプリ版:「スタンプのみでお礼する」機能のリリースについて

PL/SQLのカーソルについて

お世話になります。
Oracle11gで開発しています。
初心者です。

下記ストアドプロシージャの「zokuseisyutoku」で取得した
値(入数、重量、才数、ロケーション)を受けて、別のストアドプロシージャ
「Hyouji」の変数(irisuu、jyuryou、saisuu、lokesyon)に代入して得られた
内容をGridviewに表示させたいと思っています。
現在は、別々のストアドプロシージャなのですが、
一つに出来るものなら一つのストアドプロシージャにまとめたいの
ですが、どなたかご親切な方、ご教授頂きたく宜しくお願い致します。

       記

(1)ストアドプロシージャ1つ目
create or replace procedure zokuseisyutoku
(
sItemClassinコード表.品番%type,
out_valoutpls_integer,
out_cursoroutsys_refcursor
)
as
begin
if sItemClass is null then
open out_cursor for
select入数, 重量, 才数, ロケーション
fromコード表
;
else
open out_cursor for
select入数, 重量, 才数, ロケーション
fromコード表
where品番 = sItemClass
;
end if;
out_val := 1;


(2)ストアドプロシージャ2つ目
create or replace procedure Hyouji
(
irisuu in部材表.入数%type,
jyuryou in部材表.重量%type,
saisuu in部材表.才数%type,
lokesyon in部材表.ロケーション%type,
out_valoutpls_integer,
out_cursoroutsys_refcursor
)
as
begin
open out_cursor for
select b.資材名,b.色,b.種類,b.サイズ,b.棚番号
FROM 部材表 a,資材項目 b
WHERE a.ID = b.資材ID
AND a.入数 = irisuu AND a.重量 = jyuryou AND a.才数 = saisuu AND ロケーション = lokesyon
;

out_val := 1;
end;


end;

A 回答 (1件)

ループを二つに分ける必要ってありますか?


この処理であれば一回のSQLで欲しいデータが取得できそうな気がしますが。

create or replace procedure hoge
(
 sItemClass in コード表.品番%type,
 out_val out pls_integer,
 out_cursor out sys_refcursor
)
is
begin
 open out_cursor for
  'select b.資材名,b.色,b.種類,b.サイズ,b.棚番号'
  || ' FROM 部材表 a,資材項目 b,コード表 c'
  || ' WHERE a.ID = b.資材ID'
  || ' AND a.入数 = c.入数 AND a.重量 = c.重量 AND a.才数 = c.才数 AND a.ロケーション = c.ロケーション '
  || case when sItemClass is null then '' else 'AND c.品番 = ' || sItemClass end;

 out_val := 1;
end;
/
    • good
    • 0
この回答へのお礼

ありがとうございました。
お礼が遅くなり申し訳ございません。
今後とも宜しくお願い致します。

お礼日時:2010/09/24 22:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!