Selecionar valor de um campo na tabela
Falae pessoal... tenho uma procedure q eh pra armazenar numa tabela, os parâmetros enviados via formulário. Até ae beleza... A procedure está funcionando corretamente, mas só que quando um horario estivesr cadastrado, ele naum pode ser informado novamente... E ele não está fazendo isso... Está passando por cima... Gravando no lugar da existente. Segue a procedure:
(in_login IN VARCHAR2,in_tipo_horario IN CHAR)asv_usuario NUMBER(10);v_horario DATE;begin-- Verifica se o usuário já apontou alguma hora no dia atualSELECT SUM(1) INTO v_usuarioFROM TB_HORARIOWHERE TO_CHAR(DT_DIA, 'dd/MM/yyyy') = TO_CHAR(SYSDATE, 'dd/MM/yyyy')AND SQ_USUARIO = in_login;-- Se for EntradaIF (v_usuario IS NULL) THEN IF (UPPER(in_tipo_horario) = 'E') THEN htp.p('Cadastrando hora de entrada '); INSERT INTO TB_HORARIO(DT_DIA, SQ_USUARIO, HR_ENTRADA) VALUES (SYSDATE, in_login, SYSDATE ); ELSIF (UPPER(in_tipo_horario) = 'A') THEN htp.p('Cadastrando hora de almoco '); INSERT INTO TB_HORARIO(DT_DIA, SQ_USUARIO, HR_ALMOCO) VALUES (SYSDATE, in_login, SYSDATE ); ELSIF (UPPER(in_tipo_horario) = 'R') THEN htp.p('Cadastrando hora de retorno '); INSERT INTO TB_HORARIO(DT_DIA, SQ_USUARIO, HR_RETORNO) VALUES (SYSDATE, in_login, SYSDATE ); ELSIF (UPPER(in_tipo_horario) = 'S') THEN htp.p('Cadastrando hora de saida '); INSERT INTO TB_HORARIO(DT_DIA, SQ_USUARIO, HR_SAIDA) VALUES (SYSDATE, in_login, SYSDATE ); END IF;ELSE IF (UPPER(in_tipo_horario) = 'E') THEN htp.p('Inserindo hora de entrada '); SELECT HR_ENTRADA INTO v_horario FROM TB_HORARIO WHERE TO_CHAR(DT_DIA, 'dd/MM/yyyy') = TO_CHAR(SYSDATE, 'dd/MM/yyyy') AND HR_ENTRADA IS NULL AND SQ_USUARIO = in_login; UPDATE TB_HORARIO SET HR_ENTRADA = SYSDATE WHERE SQ_USUARIO = in_login; ELSIF (UPPER(in_tipo_horario) = 'A') THEN htp.p('Inserindo hora de almoco '); SELECT HR_ALMOCO INTO v_horario FROM TB_HORARIO WHERE TO_CHAR(DT_DIA, 'dd/MM/yyyy') = TO_CHAR(SYSDATE, 'dd/MM/yyyy') AND HR_ALMOCO IS NULL AND SQ_USUARIO = in_login; UPDATE TB_HORARIO SET HR_ALMOCO = SYSDATE WHERE SQ_USUARIO = in_login; ELSIF (UPPER(in_tipo_horario) = 'R') THEN htp.p('Inserindo hora de retorno '); SELECT HR_RETORNO INTO v_horario FROM TB_HORARIO WHERE TO_CHAR(DT_DIA, 'dd/MM/yyyy') = TO_CHAR(SYSDATE, 'dd/MM/yyyy') AND HR_RETORNO IS NULL AND SQ_USUARIO = in_login; UPDATE TB_HORARIO SET HR_RETORNO = SYSDATE WHERE SQ_USUARIO = in_login; ELSIF (UPPER(in_tipo_horario) = 'S') THEN htp.p('Inserindo hora de saida '); SELECT HR_SAIDA INTO v_horario FROM TB_HORARIO WHERE TO_CHAR(DT_DIA, 'dd/MM/yyyy') = TO_CHAR(SYSDATE, 'dd/MM/yyyy') AND HR_SAIDA IS NULL AND SQ_USUARIO = in_login; UPDATE TB_HORARIO SET HR_SAIDA = SYSDATE WHERE SQ_USUARIO = in_login; END IF; END IF; COMMIT; htp.p('Enviado com sucesso'); exceptionwhen others then null;end;São quatro tipo de horário: entrada, almoço, retorno e saída. E como um bate ponto, uma Gerência de Horário. Estou começando com essa parada, estou há um mês somente e mexendo com Oracle Portal e não diretamente com o Oracle, etc... Queria saber como faria pra saber se tal campo na tabela está vazio, caso estivesse, grava, senão, não grava...
Brigadão ae galera...
Discussão (6)
Carregando comentários...