Fórum Ajuda com consulta #50274
04/04/2005
0
Por que está gerando este erro, nunca compila o procedimento.
create procedure Periodo
(
DataInicial date,
DataFinal date
)
as
begin
select * from Ponto where Data between DataInicial and DataFinal
end
=====================erro========================Dynamic SQL Error
SQL error code = -104
Token unknown - line 9, char -1
end
Statement: create procedure Periodo
(
DataInicial date,
DataFinal date
)
as
begin
select * from Ponto where Data between DataInicial and DataFinal
end
create procedure Periodo
(
DataInicial date,
DataFinal date
)
as
begin
select * from Ponto where Data between DataInicial and DataFinal
end
=====================erro========================Dynamic SQL Error
SQL error code = -104
Token unknown - line 9, char -1
end
Statement: create procedure Periodo
(
DataInicial date,
DataFinal date
)
as
begin
select * from Ponto where Data between DataInicial and DataFinal
end
Ullrich
Curtir tópico
+ 0
Responder
Posts
04/04/2005
Afarias
todos os comandos dentro de stored procs e triggers devem terminar com um ; (ponto-e-vírgula)
como vc não colocou no final do comando ´select * from Ponto where Data between DataInicial and DataFinal´ então o IB pensa q o comando continua no end (gerando o erro)
outra coisa é q todo select dentro de um SP ou trigger deve ter um INTO para receber os valores retornados pelo select, e caso o select retorne mais q uma linha, este deve ser precedido por um FOR
quando usar o for, sempre depois da lista de variáveis definidas no INTO vc deve usar um DO seguido do código a ser executado em cada passagem pelo ´loop´. um SUSPEND é usando em procedimentos ´selecionáveis´ para informar q o registro deve ser enviado como retorno.
deverendo ficar por exemplo:
T+
como vc não colocou no final do comando ´select * from Ponto where Data between DataInicial and DataFinal´ então o IB pensa q o comando continua no end (gerando o erro)
outra coisa é q todo select dentro de um SP ou trigger deve ter um INTO para receber os valores retornados pelo select, e caso o select retorne mais q uma linha, este deve ser precedido por um FOR
quando usar o for, sempre depois da lista de variáveis definidas no INTO vc deve usar um DO seguido do código a ser executado em cada passagem pelo ´loop´. um SUSPEND é usando em procedimentos ´selecionáveis´ para informar q o registro deve ser enviado como retorno.
deverendo ficar por exemplo:
set term ^; create procedure Periodo (DataInicial date, DataFinal date) returns (campo1 varchar(10), campo2 integer) as begin for select campo1, campo2 from Ponto where Data between :DataInicial and :DataFinal into :campo1, :campo2 do suspend; end^
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)