 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
matheuspolli Novato

Registrado: Segunda-Feira, 4 de Dezembro de 2017 Mensagens: 2
|
Enviada: Seg Dez 04, 2017 8:18 am Assunto: Multiple Rows in Singleton Select (em Trigger) |
|
|
Bom dia pessoal,
Estou tendo o retorno de múltiplas linhas no select.
| Código: |
AS
DECLARE VARIABLE VALOR_COMISSAO NUMERIC(9,2);
DECLARE VARIABLE PARCELAS INTEGER;
DECLARE VARIABLE CR_CODIGO INTEGER;
DECLARE VARIABLE CR_VENCIMENTO TIMESTAMP;
DECLARE VARIABLE COM_LIBERACAO TIMESTAMP;
BEGIN
IF ((NEW.VEN_DEVOLUCAO = 1) AND (NEW.VEN_DEVOLUCAO_VENDA IS NOT NULL)) THEN
BEGIN
SELECT CAST( SUM(CAST( ((VEN_QTDE * VEN_PRECO_UNITARIO) * (1-(VEN_DESCONTO/100)))*(VEN_COMISSAO/100) AS NUMERIC(9,2))) AS NUMERIC(9,2))FROM VENDAS_VIAS WHERE VENDAS_VIAS.VEN_CODIGO = NEW.VEN_CODIGO INTO :VALOR_COMISSAO;
SELECT COUNT(*) FROM CRECEBER WHERE VEN_CODIGO = NEW.VEN_DEVOLUCAO_VENDA AND CR_STATUS = 1 INTO :PARCELAS;
IF ((VALOR_COMISSAO <0> 0)) THEN
FOR SELECT CR_CODIGO, CR_VENCIMENTO FROM CRECEBER WHERE VEN_CODIGO = NEW.VEN_DEVOLUCAO_VENDA AND CR_STATUS = 1 INTO :CR_CODIGO, :CR_VENCIMENTO DO
BEGIN
IF (NOT EXISTS(SELECT COM_CODIGO FROM COMISSAO WHERE VEN_DEVOLUCAO = NEW.VEN_CODIGO)) THEN
BEGIN
SELECT COM_LIBERACAO FROM COMISSAO WHERE CR_CODIGO = :CR_CODIGO INTO :COM_LIBERACAO;
IF (COM_LIBERACAO IS NOT NULL) THEN
COM_LIBERACAO = 'now';
INSERT INTO COMISSAO VALUES (GEN_ID(GERA_ID_COMISSAO, 1), NEW.VEN_DATA, :CR_CODIGO, NEW.FUN_CODIGO, NEW.VEN_DEVOLUCAO_VENDA, :CR_VENCIMENTO,
CAST(:VALOR_COMISSAO / :PARCELAS AS NUMERIC(9,2)), :COM_LIBERACAO, NULL, NEW.VEN_CODIGO, 0);
END
ELSE
UPDATE COMISSAO SET COM_VALOR = CAST(:VALOR_COMISSAO / :PARCELAS AS NUMERIC(9,2)) WHERE CR_CODIGO = :CR_CODIGO AND VEN_DEVOLUCAO = NEW.VEN_CODIGO;
END
END
END
|
Porém ao ir debugando a trigger, testei os selects onde retornam apenas 1 registro. E realizei o teste colocando exception na seguinte parte:
-- coloquei um aqui --- ele aparece
| Código: | | SELECT COM_LIBERACAO FROM COMISSAO WHERE CR_CODIGO = :CR_CODIGO INTO :COM_LIBERACAO; |
-- coloquei aqui também e erro é retornado sem aparecer exception.
Estou achando que problema é no INTO :COM_LIBERACAO;
Porém já testei mudar os tipos do campo, realizar cast para date e não funciona. (dropei a trigger e recriei a mesma)
Alguém pode me ajudar? |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
|
| Voltar ao Topo |
|
 |
matheuspolli Novato

Registrado: Segunda-Feira, 4 de Dezembro de 2017 Mensagens: 2
|
Enviada: Seg Dez 04, 2017 12:21 pm Assunto: |
|
|
Obrigado amigo, deu certo.
Estava tentando fazer com cast, mas não estava dando certo. |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|