Pular para o conteúdo

Fóruns SQL e PL/SQL [RESOLVIDO] Duvida Select [RESOLVIDO] Duvida Select

#96055
luan
Participante

    Boa tarde galera, surgiu uma outra dúvida que talvez seja util para outros usuários também, seguinte eu preciso gerar um ‘ where ‘ dinamicamente..

    procedure finddiaslivres(
    P_IDPRESTADORDETAIL IN PRESTADOR_DETAIL.IDDETAIL%TYPE,
    P_IDMEDICOESPECIALIDADE IN AGENDA_DADO.IDMEDICOESPECIALIDADE%TYPE,
    P_ESPECIALIDADE IN AGENDA_DADO.IDMEDICOESPECIALIDADE%TYPE,
    P_ARRAYIDTUSS IN NUMBER_ARRAY,
    P_CURSOR OUT NOCOPY TYPES.REF_CURSOR)AS

    V_CONTADOR NUMBER := 0;
    V_I NUMBER := 0;
    V_QUERYCOMPL VARCHAR2(100);

    BEGIN

    V_CONTADOR := P_ARRAYIDTUSS.COUNT;

    WHILE ( V_I V_I ) THEN
    V_QUERYCOMPL := V_QUERYCOMPL || ‘ OR B.IDTUSS =’;
    END IF;
    END LOOP;

    IF ( P_IDPRESTADORDETAIL > 0 AND P_IDMEDICOESPECIALIDADE > 0 ) THEN

    OPEN P_CURSOR FOR
      SELECT DTAGENDA
        FROM (
          SELECT DISTINCT A.DTAGENDA, B.IDTUSS
          FROM AGENDA_DETAIL A
            JOIN AGENDA_DADO B ON ( A.IDAGENDADADO = B.IDAGENDADADO )
            JOIN AGENDA_SALA C ON ( B.IDSALA = C.IDSALA )
          WHERE A.FLAG = 'DISPONIVEL' AND
            A.STATUS = 'ATIVADO' AND
            C.IDPRESTADORDETAIL = 1421 AND
            B.IDMEDICOESPECIALIDADE = 400 AND
            B.IDTUSS = V_QUERYCOMPL)
        GROUP BY DTAGENDA
        HAVING COUNT(*) > 1; 
    

    os idtuss eu enviei para procedure como array pois não sei a quantidade que será escolhida pelo usuário, mas acontece o seguinte, quando eu itero ele e vou concatenando os OR B.IDTUSS + a posição no array que seria outro numero, quando a query é executada da o erro:
    ORA-01722: número inválido.
    Creio que seja porque a variavel v_querycompl é um varchar, e o B.IDTUSS seria um number, mas nesse caso como eu faria para gerar isso dinamicamente?

    Muito obrigado novamente…