Criar Procedure sem Variáveis
eu tenho a seguinte procedure:
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.
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
Curtidas 0
Respostas
Afarias
19/11/2004
TODOS os campos do select q serão usados TEM q ser associados a 1 variável com INTO.
Só funciona assim.
T+
Só funciona assim.
T+
GOSTEI 0
Tap_pedroso
19/11/2004
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:
dá um erro indicando o ELSE mas é apenas um select eu tenho q usar [b:a1a84adc19]FOR DO SUSPEND[/b:a1a84adc19]?
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]?
GOSTEI 0
Afarias
19/11/2004
|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::
T+
|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+
GOSTEI 0