¿Cómo usar los parámetros en una cláusula 'donde valor en ...'?

Esto funciona cuando solo tengo un código de estado como parámetro.

¿Cómo puedo hacer que el código funcione cuando tengo más de un código de estado en parm_list?

Requisitos:

(1) No quiero codificar los códigos de estado en la definición de mi cursor

(2) Quiero permitir más de un código de estado en mi cláusula where

Por ejemplo: quiero ejecutar este código paraparm_list = ('NY', 'NJ', 'NC'). Estoy encontrando dificultades para reconciliar las comillas simples en parm_list con las comillas simples en la consulta 'where state_code in'.

set serveroutput on;

DECLARE
parm_list varchar2(40);

cursor get_state_codes(in_state_codes varchar2)
is
select state_name, state_code from states
where state_code in (in_state_codes);

BEGIN
 parm_list := 'NY';
 for get_record in get_state_codes(parm_list) loop
  dbms_output.put_line(get_record.state_name || get_record.state_code);
 end loop;
END;

Respuestas a la pregunta(2)

Su respuesta a la pregunta