Fórum Criar stored procedure via delphi com query #466542

10/01/2014

0

Ola, estou criando uma stored procedure query e o delphi ao executar o
qry.execsql me retorna o seguinte erro:
"General SQL Error.
Token Unknown - line 23, colunm 12
?."

segue abaixo o codigo sql da query

create or alter procedure ATUALIZA_ORDERNAHORAABAST
as
declare variable VNUMITEMVENDA integer;
declare variable VHORAABASTSTRING varchar(24);
declare variable VCODVENDA integer;
declare variable VCODBICO integer;
declare variable VHORAABAST date;
declare variable VENCERRANTE integer;
declare variable VAUX date;
declare variable VAUXINT integer;
declare variable VAUXCODVENDA integer;
declare variable VAUXNUMITEMVENDA integer;
begin
for select extract (day from recupVendas.datavenda ) || "."
|| extract (month from recupVendas.datavenda ) || "."
|| extract (year from recupVendas.datavenda ) || " "
|| extract (hour from recupVendas.horavenda ) || ":"
|| extract (minute from recupVendas.horavenda ),
recupvendas.codvenda, recupItensVenda.numitemvenda
from recupVendas
inner join recupItensVenda on (recupItensVenda.codvenda = recupVendas.codvenda)
order by recupItensVenda.encerranteinicial
into :VHORAABASTSTRING, :vCodVenda, :vNumItemVenda do
begin
update recupItensvenda set recupItensVenda.horaabast = :VHORAABASTSTRING
where recupItensVenda.codvenda = :vcodvenda and
recupItensVenda.numitemvenda = :vNumItemVenda;
end
for select bicos.codbico from bicos into :vcodbico do
begin
vAuxInt = 0;
for select recupitensvenda.codvenda, recupitensvenda.numitemvenda, recupitensvenda.horaabast, recupitensvenda.encerranteinicial
from recupitensvenda
where recupitensvenda.codbico = :vcodbico and recupitensvenda.encerranteinicial <> 0 and recupitensvenda.encerrante <> 0
order by recupitensvenda.encerranteinicial
into :vcodvenda, :vNumItemVenda, :vhoraabast, :vencerrante do
begin
if (:vauxint > 0) then
begin
if (:vAux > :vhoraabast) then
begin
update recupItensvenda set recupItensVenda.horaabast = :vhoraabast
where recupItensVenda.codvenda = :vAuxCodVenda and recupItensVenda.numitemvenda = :vnumitemvenda;
end
end
vAux = :vhoraabast;
vAuxCodVenda = :vCodvenda;
vAuxNumItemVenda = :vNumItemVenda;
vAuxInt = 1;
end
end
end



Alguem pode me ajudar a descobrir porque a query nao executa e mostra que existe uma interrogacao no codigo?
Obrigado
Fabio Cardoso

Fabio Cardoso

Responder

Posts

10/01/2014

Leandro Chiodini

Bom dia

Esste erro é generico
e quer dizer que tem um erro na sintaxe da tua procedure.
pode ser um :
oi ;

no caso ai falta uma ; no ultimo END
recomendo dar uma geral no teu codigo,
identar ele pra ver certinho os begins e ends.


att,
Chiodini
Responder

Gostei + 0

10/01/2014

Fabio Cardoso

eu fiz essa identação aqui, e testei essa mesma query direto no ibexpert ela cria o procedure e executa perfeitamente mas no delphi continua dando o erro
Sera que tem algum caracter que o delphi identifica diferente do editor do ibexpert?
Responder

Gostei + 0

10/01/2014

Leandro Chiodini

Acho que pra tu executar uma procedure
nao pode ser esse comando no delphi

Coloque um componente TSQLStoredProc mude a propriedade SQLConnection para Conn e SotoredProcName para o nome da sua procedure que é o nome da procedure criada no banco de dados
e chama ao invez do execsql chama o ExecProc ?

att,
Chiodini
Responder

Gostei + 0

10/01/2014

Fabio Cardoso

eu imaginei isso porem essa procedure ainda nao existe no banco, no caso seria tipo eu criar uma query dessas ai somente com a assinatuda da procedure e executar esse script no storedprocedure?
Responder

Gostei + 0

10/01/2014

Leandro Chiodini

Create or replace
poderia ser usado,
dai ficaria tranquilo.
Responder

Gostei + 0

10/01/2014

Fabio Cardoso

a stored procedure nao deu tambem nao ele so executa a procedure assinatura que criei na query
Responder

Gostei + 0

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

Aceitar