[firebase-br] SP que executa somente a parte inicial, o restante não
Sandro Souza
escovadordebits em gmail.com
Qua Abr 22 13:54:37 -03 2009
Bom dia/tarde NextCorp.
Talvez seja besteira o que vou dizer, mas acredito que os parâmetros de
saída witem, wproduto, wfabricante, wrecipiente, winmetro, wdtfab, wdtret,
wdtrec e wdtalv podem ser redefinidos como variáveis locais dessa stored
procedure, retornando apenas o parâmetro wnfs_controle.
Ou seja, o trecho que é:
CREATE OR ALTER PROCEDURE SP_INSERIR_CAB_ITENS_NFS_
>
> BALCAO (
> wcodigo integer,
> wvendedor integer,
> wcontrole integer)
> returns (
> wnfs_controle integer,
> witem integer,
> wproduto integer,
> wfabricante integer,
> wrecipiente char(10),
> winmetro char(15),
> wdtfab date,
> wdtret date,
> wdtrec date,
> wdtalv date)
> as
> begin
.........
poderia ficar assim:
CREATE OR ALTER PROCEDURE SP_INSERIR_CAB_ITENS_NFS_
>
> BALCAO (
> wcodigo integer,
> wvendedor integer,
> wcontrole integer)
> returns (
> wnfs_controle integer)
as
declare variable witem integer;
declare variable wproduto integer;
declare variable wfabricante integer;
declare variable wrecipiente char(10);
declare variable winmetro char(15);
declare variable wdtfab date;
declare variable wdtret date;
declare variable wdtrec date;
declare variable wdtalv date;
begin
.........
Talvez não tenha nada a ver com o problema que você relatou, mas você
poderia testar essa modificação?
Espero ter ajudado mais que atrapalhado.
2009/4/22 NextCorp Informática <nextcorp em terra.com.br>
> Caros colegas
>
> Estou com uma SP, que executada de dentro do sistema, em delphi, executa
> somente a primeira parte da SP e o restante não.
> Se executo no Ibexpert, funciona normalmente.
>
> Segue o código tanto da rotina que chama e a rotina:
>
> { Executa SP inserir cabecalho e itens da NFS }
> with dmDados.IB_StoredProc1 do
> begin
> Close;
> StoredProcName:= 'SP_INSERIR_CAB_ITENS_NFS_BALCAO';
> ParamByName('wcodigo').asInteger:= wcli_codigo;
> // traz do formCadastroCliente
> ParamByName('wvendedor').asInteger:= wcli_ven_codigo;
> ParamByName('wcontrole').asInteger:= wnfe_controle;
> if not Prepared then
> Prepare;
> ExecProc;
> wnfs_controle:= FieldByName('wnfs_controle').asInteger;
> end;
> {final}
>
> CREATE OR ALTER PROCEDURE SP_INSERIR_CAB_ITENS_NFS_BALCAO (
> wcodigo integer,
> wvendedor integer,
> wcontrole integer)
> returns (
> wnfs_controle integer,
> witem integer,
> wproduto integer,
> wfabricante integer,
> wrecipiente char(10),
> winmetro char(15),
> wdtfab date,
> wdtret date,
> wdtrec date,
> wdtalv date)
> as
> begin
> /* Inserir o cabecalho no NFS */ está parte executa normalmente
> insert into nf_saida(nfs_controle, nfs_numero, nfs_cli_codigo,
> nfs_dt_emissao, nfs_total, nfs_situacao, nfs_ven_codigo, nfs_fpa_codigo)
> values(Gen_id(gen_controle_nfe_nfs_id, 1), 0, :wcodigo, current_date, 0,
> 'S', :wvendedor, 0) returning nfs_controle into :wnfs_controle;
>
> /* Inserir os itens da NFS */ está parte não executa
> for
> select infe_item, infe_pro_codigo, infe_fab_codigo,
> infe_num_recipiente, infe_inmetro, infe_dt_fabricacao, infe_dt_reteste,
> infe_dt_recarga, infe_dt_alvara
> from nf_entrada_itens
> where infe_controle = :wcontrole
> into :witem, :wproduto, :wfabricante, :wrecipiente, :winmetro, :wdtfab,
> :wdtret, :wdtrec, wdtalv
> do
> begin
> insert into nf_saida_itens(infs_item, infs_controle, infs_infe_item,
> infs_infe_pro_codigo, infs_fab_codigo, infs_num_recipiente, infs_inmetro,
> infs_dt_fabricacao, infs_dt_reteste, infs_dt_recarga, infs_dt_alvara,
> infs_preco_total, infs_num_ordem)
> values(Gen_id(gen_nf_saida_itens_id, 1), :wnfs_controle, :witem,
> :wproduto, :wfabricante, :wrecipiente, :winmetro, :wdtfab, :wdtret, :wdtrec,
> :wdtalv, 0, 0);
> end
> suspend;
> end^
>
>
>
>
>
>
> Atenciosamente
>
> Washington André Muller da silva
>
> #######################
> NextCorp Informática Ltda
> www.nextcorp.com.br
> nextcorp em terra.com.br
> 0xx-(51)-3037-6605
> #######################
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista