[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