› Fóruns › SQL e PL/SQL › [RESOLVIDO] Duvida Select › [RESOLVIDO] Duvida Select
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…