dポイントプレゼントキャンペーン実施中!

PL/SQLで、Functionの中で実行するselect文のWhereに、Functionの
引数で受けとった値をセットしようとしています。
この引数が文字列(VARCHAR2型)の場合、どのようにWHEREで、記述したらよいのでしょうか?
ご教授のほどをよろしくお願いします。

CREATE OR REPLACE FUNCTION Fn_TBL_AAA
(psCODEIN VARCHAR2)
IS
CURSOR TBL_AAA_CUR IS
SELECT * FROM TBL_AAA WHERE BBB = psCODE ;
TBL_AAA_REC TTBL_AAA_CUR%ROWTYPE;
      :
      :
※上記のように記述すると、実行ではエラーが発生しないのですが、
 取得したい結果が返ってきません。TABLE(TBL_AAA)のBBBは、
 VARCHAR2なので、通常のSQL*PLUSのSELECT文ではBBB = psCODE
 はBBB = 'psCODE'のように [']で括るのですが、PL/SQLの
 FUNCTION内ではどのように記述すればよいのかが
 わかりません。

以上、よろしくお願いいたします。

A 回答 (1件)

こんにちわ。



> ※上記のように記述すると、実行ではエラーが発生しないのですが、
> 取得したい結果が返ってきません。

以下のようにして見て下さい。

カーソル宣言文:
CURSOR TBL_AAA_CUR(psBBB varchar2) IS
SELECT * FROM TBL_AAA WHERE BBB = psBBB;

カーソルオープン時
OPEN TBL_AAA_CUR(psCODE);
又は
FOR vREC in TBL_AAA_CUR(psCODE) LOOP

※ カーソル FOR LOOP の中でのみ使用するのであれば
  TBL_AAA_REC の宣言は不要です。念のため
    • good
    • 0
この回答へのお礼

muyoshid様
具体的な記述例を交えてのご教授ありがとうございます。

早速、試してみたところうまくいきました。
ありがとうございました。

お礼日時:2007/07/09 19:07

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