Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

カーソルの引数にwhere IN句の中身を渡したい。

896440Oct 27 2011 — edited Oct 31 2011
お世話になっております。
掲題の通り、where句のINに使用する条件をvarchar2で定義して渡しているのですが、
期待通りの結果が得られません。
※期待している結果はprocess_def = 45のデータがselectされて欲しい。

特別な方法があるのでしょうか?
ご存知の方はご教授ください。
よろしくお願いします。


以下のようなコードを書きました。
<pre>

実行結果:
SQL> declare
2
3 cursor testcur( InuserId in varchar2, InprocessDef in varchar2 ) is
4 select activity_cd from test
5 where user_id = InuserId
6 and process_def in ( InprocessDef ) ;
7
8 processDef varchar2(3000) ;
9
10 begin
11 processDef := CHR(39) || 45 || CHR(39) || ',' || CHR(39) || 44 || CHR(39) ;
12 dbms_output.put_line('①' || processDef);
13
14 for i in testcur( 'S123456', processDef ) loop
15 dbms_output.put_line('②' || i.activity_cd);
16 end loop ;
17 return ;
18 end ;
19 /

①'45','44'

PL/SQLプロシージャが正常に完了しました。

テーブル定義:
SQL> desc test
名前 NULL? 型
----------------------------------------------- -------- --------------------------------
ACTIVITY_CD VARCHAR2(10)
PROCESS_DEF VARCHAR2(10)
USER_ID VARCHAR2(10)

データ内容:
SQL> select * from test ;

ACTIVITY_C PROCESS_DE USER_ID
---------- ---------- ----------
100 45 S123456
100 46 S123456
100 47 S123456

SQL>

</pre>
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 28 2011
Added on Oct 27 2011
2 comments
3,475 views