[firebase-br] [Firebase-br]Problemas com RETURNING

cpd em lekagi.com.br cpd em lekagi.com.br
Qua Jul 29 16:15:50 -03 2009


Olá pessoal.
Criei duas SP's no banco com a finalidade de pegar o código do registro
gravado no bd.
No IbExpert, as duas funcionaram 100%
O problema vem no delphi7. A procedure usada para gravar o cadastro de
bairos e retornar o codigo funciona 100% porém a usada para gravar o
cadastro de cliente retorna o valor em branco.
Testes efetuados:
Verifiquei que esse problema só está ocorrendo quando o cadastro é
grande. Ex: Meu cadastro de clientes tem 53 campos e nele tenho o problema.
No cadastro de bairros, tenho 2 campos e nele a SP funciona normalmente.
Uso Delphi7+ZEOS+Firebird2.1.2.
Segue abaixo a Stored procedure criada para retornar o código do cliente
cadastro. 
Desde já agradeço as futuras ajudas..
Abraço a todo.. Jáber S. C. Lima

>>--------Procedure------<<

SET TERM ^ ;

CREATE OR ALTER PROCEDURE SET_GRAVACLIENTE (
    codigo integer,
    empresa integer,
    pessoa char(1),
    razao varchar(80),
    fantasia varchar(80),
    cpf varchar(18),
    rg varchar(25),
    orgexped varchar(80),
    dtexpedicao date,
    dtnascimento date,
    pai varchar(80),
    mae varchar(80),
    naturalidade integer,
    desconto d_percent,
    endereco varchar(80),
    bairro integer,
    cidade integer,
    cep varchar(9),
    situacao integer,
    maladireta char(1),
    limitecredito d_money,
    vendcredito char(1),
    banco integer,
    agencia varchar(10),
    conta varchar(15),
    apelido varchar(30),
    email varchar(100),
    observacoes varchar(100),
    temcasa char(1),
    tempocasa date,
    prazo integer,
    bloqueio integer,
    diasjuros integer,
    moradiaria d_percent,
    trabalho varchar(80),
    endtrabalho varchar(80),
    bairrotrabalho integer,
    cidadetrabalho integer,
    telefonetrabalho varchar(13),
    cargo varchar(25),
    salario d_money,
    dtadmissao date,
    telefone varchar(13),
    celular varchar(13),
    conjugue varchar(80),
    trabconj varchar(80),
    endtrabconj varchar(80),
    bairtrabconj integer,
    cidadetrabconj integer,
    cpfconj varchar(14),
    cli_emit char(1),
    bloquado char(1),
    inadimplente char(1),
    vendedor integer)
returns (
    wcodcliente integer)
as
begin
    INSERT INTO TBL_CLIENTES (CODIGO, EMPRESA, PESSOA, RAZAO, FANTASIA,
CPF, RG, ORGEXPED, DTEXPEDICAO, DTNASCIMENTO, PAI, MAE, NATURALIDADE,
DESCONTO, ENDERECO, BAIRRO, CIDADE, CEP, SITUACAO, MALADIRETA,
LIMITECREDITO, VENDCREDITO, BANCO, AGENCIA, CONTA, APELIDO, EMAIL,
OBSERVACOES, TEMCASA, TEMPOCASA, PRAZO, BLOQUEIO, DIASJUROS, MORADIARIA,
TRABALHO, ENDTRABALHO, BAIRROTRABALHO, CIDADETRABALHO, TELEFONETRABALHO,
CARGO, SALARIO, DTADMISSAO, TELEFONE, CELULAR, CONJUGUE, TRABCONJ,
ENDTRABCONJ, BAIRTRABCONJ, CIDADETRABCONJ, CPFCONJ, CLI_EMIT, BLOQUADO,
INADIMPLENTE, VENDEDOR)
    VALUES (Gen_id(gen_tbl_clientes_id, 1), :EMPRESA, :PESSOA, :RAZAO,
:FANTASIA, :CPF, :RG, :ORGEXPED, :DTEXPEDICAO, :DTNASCIMENTO, :PAI, :MAE,
:NATURALIDADE, :DESCONTO, :ENDERECO, :BAIRRO, :CIDADE, :CEP, :SITUACAO,
:MALADIRETA, :LIMITECREDITO, :VENDCREDITO, :BANCO, :AGENCIA, :CONTA,
:APELIDO, :EMAIL, :OBSERVACOES, :TEMCASA, :TEMPOCASA, :PRAZO, :BLOQUEIO,
:DIASJUROS, :MORADIARIA, :TRABALHO, :ENDTRABALHO, :BAIRROTRABALHO,
:CIDADETRABALHO, :TELEFONETRABALHO, :CARGO, :SALARIO, :DTADMISSAO,
:TELEFONE, :CELULAR, :CONJUGUE, :TRABCONJ, :ENDTRABCONJ, :BAIRTRABCONJ,
:CIDADETRABCONJ, :CPFCONJ, :CLI_EMIT, :BLOQUADO, :INADIMPLENTE, :VENDEDOR)
returning CODIGO INTO wcodcliente;

  suspend;
end^

SET TERM ; ^

GRANT INSERT ON TBL_CLIENTES TO PROCEDURE SET_GRAVACLIENTE;

GRANT EXECUTE ON PROCEDURE SET_GRAVACLIENTE TO SYSDBA;





Mais detalhes sobre a lista de discussão lista