GARANTIR DESCONTO

Fórum Criar Procedure sem Variáveis #48147

19/11/2004

0

eu tenho a seguinte procedure:

SET TERM # ;
CREATE PROCEDURE FATURAMENSAL(DIAVENC DOUBLE PRECISION, MESANO CHAR(4)) AS
BEGIN

FOR SELECT CLI.NCARTAO, CLI.CODRN, CLI.CODRNTEMP, CLI.VALIDADERN FROM TABCLIENTES CLI
 WHERE CLI.FORMAPGTO=1 AND CLI.DIAVENCIMENTO=:DIAVENC AND CLI.CARTENTR=1 [b]DO[/b]
  BEGIN
   IF (:VALIDADE >= :MESANO) THEN
    BEGIN
    
     SELECT * FROM SPTAXAS(:CODRN)

    END
    ELSE
     BEGIN
 
      SELECT * FROM SPTAXAS(:CODRNTEMP)
     
     END

END
SET TERM ;
aqui não está a procedure inteira mas o erro é logo no inicio.

o erro dá no DO q está em negrito se eu colocar um INTO antes ele continua se eu deixar do jeito q está dá erro na linha indicando o DO, mas ei queria utilizar o campo CLI.CODRN depois + abaixo do código q não contas aí pq se eu for usar variáveis nessa procedure vão ser muitas pq a procedure será grande e irá utilizar os campos do select acima.



Tap_pedroso

Tap_pedroso

Responder

Posts

19/11/2004

Afarias

TODOS os campos do select q serão usados TEM q ser associados a 1 variável com INTO.

Só funciona assim.


T+


Responder

Gostei + 0

19/11/2004

Tap_pedroso

OK.

TENHO + DUAS PERGUNTAS.

1ª na minha procedure eu não vou retornar nenhum valor para o usuario será uma SP q recebe um parâmetro e trabalha dentro do banco.ao declarar as variaveis eu declaro só com [b:a1a84adc19]DECLARE VARIABLE[/b:a1a84adc19] eu não preciso usar [b:a1a84adc19]RETURNS()[/b:a1a84adc19], ok?

2ª estou tendo um probleminha com esse código dentro da SP:
  IF (:CLIVALIDADE >= :MESANO) THEN
     SELECT * FROM SPTAXAS(:CLICODRN) INTO :TXADESAO,:TXADICIONAL,:PERIODICO,:TXREEMISSAO,
     :TXREADICIONAL,:TXROTATIVO,:TXPARC,:TXATRASO,:MULTA,:TXPERIODO

    ELSE
     SELECT * FROM SPTAXAS(:CLICODRNTEMP) INTO :TXADESAO,:TXADICIONAL,:PERIODICO,:TXREEMISSAO,
     :TXREADICIONAL,:TXROTATIVO,:TXPARC,:TXATRASO,:MULTA,:TXPERIODO

dá um erro indicando o ELSE mas é apenas um select eu tenho q usar [b:a1a84adc19]FOR DO SUSPEND[/b:a1a84adc19]?


Responder

Gostei + 0

19/11/2004

Afarias

|na minha procedure eu não vou retornar nenhum valor para o usuario
|será uma SP q recebe um parâmetro e trabalha dentro do banco.ao
|declarar as variaveis eu declaro só com DECLARE VARIABLE eu não
|preciso usar RETURNS(), ok?

OK


|estou tendo um probleminha com esse código dentro da SP:
|dá um erro indicando o ELSE mas é apenas um select eu tenho q usar
|FOR DO SUSPEND?

Se o SELECT retorna + q 1 registro vc tem q usar o FOR SELECT, caso contrário não precisa.

Vc SÓ usa o SUSPEND se pretende retornar dados no procedimento.

Mas o q está faltando ai é um ; (ponto-e-vírgula) após cada SELECT (para finalizar o comando)

ex::

IF (CLIVALIDADE >= MESANO) THEN 
    SELECT * FROM SPTAXAS(:CLICODRN) 
    INTO :TXADESAO,:TXADICIONAL,:PERIODICO,:TXREEMISSAO, 
        :TXREADICIONAL,:TXROTATIVO,:TXPARC,:TXATRASO,:MULTA,
        :TXPERIODO;
ELSE 
    SELECT * FROM SPTAXAS(:CLICODRNTEMP) 
    INTO :TXADESAO,:TXADICIONAL,:PERIODICO,:TXREEMISSAO, 
        :TXREADICIONAL,:TXROTATIVO,:TXPARC,:TXATRASO,:MULTA,
        :TXPERIODO;


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar