如何在 IN 子句中传递变量
How to pass variable in IN clause
我声明了变量 i_unit_attempt_status,我想将该变量传递给 'In clause'。我该怎么做?
INNER JOIN student_unit_attempt sua
on sua.person_id=sei.person_id
AND sua.course_cd=sei.course_cd
AND sua.unit_cd=sei.unit_cd
AND (sua.unit_attempt_status in (l_unit_attempt_status))
变量中的数据将为:
Option 1:'COMPLETED','DISCONTIN','DUPLICATE','ENROLLED','INVALID','UNCONFIRM'
Option 2: 'ENROLLED'
See this answer.
使用LIKE
:
INNER JOIN student_unit_attempt sua
on sua.person_id=sei.person_id
AND sua.course_cd=sei.course_cd
AND sua.unit_cd=sei.unit_cd
AND ','||l_unit_attempt_status||',' LIKE '%,'''||sua.unit_attempt_status||''',%'
或者传入一个集合:
CREATE TYPE status_list IS TABLE OF varchar2(20);
DECLARE
l_unit_attempt_status status_list := status_list( 'COMPLETED','DISCONTIN','DUPLICATE','ENROLLED','INVALID','UNCONFIRM' );
BEGIN
SELECT <your_column_list>
INTO <variables>
FROM table_name sei
INNER JOIN student_unit_attempt sua
on sua.person_id=sei.person_id
AND sua.course_cd=sei.course_cd
AND sua.unit_cd=sei.unit_cd
AND sua.unit_attempt_status MEMBER OF l_unit_attempt_status;
END;
/
或拆分列表:
INNER JOIN student_unit_attempt sua
on sua.person_id=sei.person_id
AND sua.course_cd=sei.course_cd
AND sua.unit_cd=sei.unit_cd
AND sua.unit_attempt_status in ( SELECT COLUMN_VALUE
FROM XMLTABLE( l_unit_attempt_status ) )
我声明了变量 i_unit_attempt_status,我想将该变量传递给 'In clause'。我该怎么做?
INNER JOIN student_unit_attempt sua
on sua.person_id=sei.person_id
AND sua.course_cd=sei.course_cd
AND sua.unit_cd=sei.unit_cd
AND (sua.unit_attempt_status in (l_unit_attempt_status))
变量中的数据将为:
Option 1:'COMPLETED','DISCONTIN','DUPLICATE','ENROLLED','INVALID','UNCONFIRM'
Option 2: 'ENROLLED'
See this answer.
使用LIKE
:
INNER JOIN student_unit_attempt sua
on sua.person_id=sei.person_id
AND sua.course_cd=sei.course_cd
AND sua.unit_cd=sei.unit_cd
AND ','||l_unit_attempt_status||',' LIKE '%,'''||sua.unit_attempt_status||''',%'
或者传入一个集合:
CREATE TYPE status_list IS TABLE OF varchar2(20);
DECLARE
l_unit_attempt_status status_list := status_list( 'COMPLETED','DISCONTIN','DUPLICATE','ENROLLED','INVALID','UNCONFIRM' );
BEGIN
SELECT <your_column_list>
INTO <variables>
FROM table_name sei
INNER JOIN student_unit_attempt sua
on sua.person_id=sei.person_id
AND sua.course_cd=sei.course_cd
AND sua.unit_cd=sei.unit_cd
AND sua.unit_attempt_status MEMBER OF l_unit_attempt_status;
END;
/
或拆分列表:
INNER JOIN student_unit_attempt sua
on sua.person_id=sei.person_id
AND sua.course_cd=sei.course_cd
AND sua.unit_cd=sei.unit_cd
AND sua.unit_attempt_status in ( SELECT COLUMN_VALUE
FROM XMLTABLE( l_unit_attempt_status ) )