Como usar parâmetros em uma cláusula 'where value in…'?

Isso funciona quando eu tenho apenas um código de estado como parâmetro.

Como posso fazer com que o código funcione quando tenho mais de um código de estado em parm_list?

Requisitos:

(1) Eu não quero codificar os códigos de estado na minha definição de cursor

(2) Eu quero permitir mais de um código de estado na minha cláusula where

Por exemplo: eu quero executar este código paraparm_list = ('NY', 'NJ', 'NC'). Estou encontrando dificuldades em reconciliar aspas simples em parm_list com as aspas simples na 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;