Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #107636
    Avatar de JULIANO BENEVENUTOJULIANO BENEVENUTO
    Participante

      Boa Tarde a todos.

      Estou com o seguinte cenário, tenho uma procedure que possui um cursor. No select deste cursor tenho Status diferentes de pedidos que posso utilizar.

      O que gostaria de fazer é hora usar um conjunto de status e hora usar outro conjunto de status.

      Para isso criei um parametro de entrada que recebe (0 ou 1), e criei uma condição IF que dependente do parametro atribui os status para uma variavel do tipo VARCHAR.

      Após isso inicializo meu cursor utilizando esta variavel em uma clausula IN no Where do select.

      Mas o select não retorna nenhuma linha, se passo os mesmo status na clausula IN de forma manual o select retorna várias linhas.

      Segue exemplo do meu IF (estou usando tres aspas simples para que fique uma aspa na variavel):

      IF pm_statuspedido = 0 THEN
      v_statuspedido := ”’FALTA MERCADORIA”’ || ‘,’ || ”’SALDO”’;

      ELSIF pm_statuspedido = 1 THEN
      v_statuspedido := ”’PENDENTE”’ || ‘,’ || ”’TRANSPORTE”’;

      END IF;

      Segue exemplo do Where do select no cursor:

      AND (PS.STATUS IN (v_statuspedido))

      O que estou fazendo de errado para o select não conseguir interpretar na clausula IN minha variavel?

      Obs: a variavel v_statuspedido é do tipo VARCHAR2(200)

      #107637
      Avatar de rmanrman
      Participante

        @JULIANO BENEVENUTO

        Se você reparar bem a condição formada é a seguinte:


        AND (PS.STATUS IN ('''PENDENTE'','TRANSPORTE'''))

        Que é diferente disso:


        AND (PS.STATUS IN ('PENDENTE','TRANSPORTE'))

        Tente da seguinte forma:


        AND (PS.STATUS IN (
        SELECT regexp_substr('PENDENTE,TRANSPORTE', '[^,]+', 1, LEVEL) token
        FROM dual
        CONNECT BY LEVEL <= length('PENDENTE,TRANSPORTE',) - length(REPLACE('PENDENTE,TRANSPORTE',, ',', '')) + 1))

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.
      plugins premium WordPress