como passar um nome de tabela como parâmetro para o procedimento armazenado?

É possível criar umrowtype para um nome de tabela que é passado como um parâmetro para umStored-Procedure e também como eu sei as colunas para resolvê-los noDBMS_OUUTPUT.PUT_LINE() declaração.

O usuário final pode fornecer qualquer nome de usuário (esquema) e nome da tabela

Eu quero fazer algo como abaixo, mas não funciona.

 CREATE OR REPLACE PROCEDURE SP_PASS(USER_NAME VARCHAR2,TAB_NAME IN VARCHAR2)
 AS
    TYPE REF_CUR IS REF CURSOR;
    V_ARR REF_CUR;
    V_SQL VARCHAR(200);
    V_ROWTYPE USER_NAME.TAB_NAME%ROWTYPE;
 BEGIN
     V_SQL := 'SELECT * FROM '||USER_NAME||'.'||TAB_NAME;
     OPEN V_ARR FOR V_SQL;
     LOOP
     FETCH V_ARR INTO V_ROWTYPE;
     EXIT WHEN V_ARR%NOT FOUND;
     DBMS_OUTPUT.PUT_LINE(V_ROWTYPE.COL1||','||V_ROWTYPE.COL2||','||V_ROWTYPE.COL3);
     END LOOP;
     CLOSE V_ARR;
END;

Deixe-me saber se é possível.

Obrigado.