Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vivi.globo

Olá

Recommended Posts

Olá..Pessoal estou com uma duvida..Estou fazendo uma procedure..Mas estou usando cursores...Veja a procedure abaixo:CREATE OR REPLACE PROCEDURE PROC_GLB_ISP_BLOQUEAR_SERVICO(P_ASSINATURA IN TB_GLB_ISP_INFO_ASSINATURA.ASSINATURA_ID%TYPE, P_USERNAME IN TB_GLB_ISP_LOGIN.USERNAME_TXT%TYPE, P_USUARIO IN TB_GLB_ISP_LOGIN.USUARIO_ID%TYPE)AS TYPE C_USUARIO IS REF CURSOR; V_USU C_USUARIO; V_USUARIO NUMBER; V_ASSINATURA NUMBER; BEGIN IF P_ASSINATURA IS NULL THEN BEGIN OPEN V_USU FOR SELECT A.USUARIO_ID FROM TB_GLB_ISP_ASSINANTE A, TB_GLB_ISP_LOGIN B WHERE A.USUARIO_ID=B.USUARIO_ID AND A.USUARIO_ID=P_USUARIO AND B.USERNAME_TXT=P_USERNAME; LOOP FETCH V_USU INTO V_USUARIO; EXIT WHEN V_USU%NOTFOUND; BEGIN UPDATE TB_GLB_ISP_LOGIN_SERVICO_XREF SET STATUS_NUM=0 WHERE USUARIO_ID=V_USUARIO; END; COMMIT; END LOOP; CLOSE V_USU; END; END IF;END;È uma procedure para alterar um serviço de um determinado assinante...Neste esxemplo está funcionando......Mas minha duvida é que quero usar mais de um IF em um cursor ....e não sei como..Já tentei de varias formas ...mas esta tando erro..Veja abaixo o que eu quero fazer:CREATE OR REPLACE PROCEDURE PROC_GLB_ISP_BLOQUEAR_SERVICO(P_ASSINATURA IN TB_GLB_ISP_INFO_ASSINATURA.ASSINATURA_ID%TYPE, P_USERNAME IN TB_GLB_ISP_LOGIN.USERNAME_TXT%TYPE, P_USUARIO IN TB_GLB_ISP_LOGIN.USUARIO_ID%TYPE)AS TYPE C_USUARIO IS REF CURSOR; V_USU C_USUARIO; V_USUARIO NUMBER; V_ASSINATURA NUMBER; BEGIN IF P_ASSINATURA IS NULL THEN BEGIN OPEN V_USU FOR SELECT A.USUARIO_ID FROM TB_GLB_ISP_ASSINANTE A, TB_GLB_ISP_LOGIN B WHERE A.USUARIO_ID=B.USUARIO_ID AND A.USUARIO_ID=P_USUARIO AND B.USERNAME_TXT=P_USERNAME; LOOP FETCH V_USU INTO V_USUARIO; EXIT WHEN V_USU%NOTFOUND; IF P_USERNAME IS NULL THEN OPEN V_USU FOR SELECT USUARIO_ID FROM TB_GLB_ISP_ASSINANTE WHERE USUARIO_ID=USUARIO_ID AND USUARIO_ID=P_USUARIO AND ASSINATURA_ID=P_ASSINATURA; LOOP FETCH V_USU INTO V_USUARIO; EXIT WHEN V_USU%NOTFOUND; BEGIN UPDATE TB_GLB_ISP_LOGIN_SERVICO_XREF SET STATUS_NUM=0 WHERE USUARIO_ID=V_USUARIO; END; COMMIT; END LOOP; CLOSE V_USU; END; END IF;END;O que estou fazendo de Errado??

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja a sintaxe... se ainda não conseguir, avisa, beleza?

;)

CREATE OR REPLACE PROCEDURE PRC_TESTE ISCURSOR cur_teste IS (SELECT nome FROM cadastro);BEGIN   FOR x IN cur_teste LOOP	  IF x.nome = 'EDUARDO ALMEIDA' THEN		 INSERT INTO tabela_a VALUES(x.nome);	  ELSE		 INSERT INTO tabela_b VALUES(x.nome);	  END IF;   END LOOP;   COMMIT;END PRC_TESTE;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.