Res: [delphi-br] Re: ORA-06502 - Delphi

2007-07-16 Por tôpico Ribamar Sousa
Bom Dia,

EMPRESA.cod_empresa é NUMBER(6)
EMPRESA.nome é VARCHAR2(30)

O Acesso ao banco que estou utilizando é o DBExpress, e em relação ao .Value, 
eu testei com .AsInteger, .AsString e não funcionou, estou tentando rodar 
direto do SQLStoredProc(DBExpress), atribuindo nos Parametros, no campo VALUE 
de cada um, o determinado valor e tentando rodar... e também dá o mesmo erro, 
eu acho que seja alguma configuração, não sei bem, pois eu rodei a procedure 
pelo SQLNavigator e funcionou corretamente.

Aguardo respostas.

Desde já agradeço.

Ribamar Sousa Filho


- Mensagem original 
De: Josir Gomes [EMAIL PROTECTED]
Para: delphi-br@yahoogrupos.com.br
Enviadas: Segunda-feira, 16 de Julho de 2007 8:28:55
Assunto: [delphi-br] Re: ORA-06502 - Delphi

Olá Ribamar,

1) pela declaração da procedure, não dá para saber qual é o tipo de
EMPRESA.cod_ empresa%TYPE. Ele é numérico ou char?

2) vc não especificou com que engine está acessando o banco. É BDE,
DbExpress, ODAC??

3) Se for BDE, não utilize parametros com CHAR pois as vezes dá
problema de incompatibilidade entre o Oracle e o BDE - Bosta De Engine :)

4) Uma dica: procure não utilizar .Value e sim .AsString .AsInteger.
Isso serve tanto para ParamByName como FieldByName.
Além do código ficar + rápido, o compilador lhe ajuda na hora de
interpretar conversões de tipo.

Boa Sorte,
Josir.

--- Em [EMAIL PROTECTED] os.com.br, Ribamar Sousa [EMAIL PROTECTED] . escreveu

 Boa Noite Pessoal,
 estou fazendo uma aplicação Delphi x Oracle, e criei uma procedure
para Inserir, Alterar e Excluir em uma tabela SIMPLES, que contem
apenas o CODIGO e NOME
 e no Delphi estou utilizando o componenten SQLStoredProc, para
acessar a Procedure e enviar os dados para que seja executado a procedure.
 A procedure está funcionando corretamente, pois fiz os testes pelo
SQL Navigator, sendo que pelo Delphi dá o seguinte erro
 ORA-06502: PL/SQL: erro: erro de conversão de caractere em número
numérico ou de valor
 ORA-06512: em line 1'
 
 Na procedure tem os seguintes campos...
 PROCEDURE EMPRESA_IAE
 ( vTipo in Char,
 vCodigo in EMPRESA.cod_ empresa%TYPE,
 vNome in EMPRESA.nome% TYPE)
 AS
 ...
 
 Então no DELPHI estou fazendo assim
 
 DM.SQLProcEmpresa. ParamByName( 'vTipo'). Value := 'I';
 DM.SQLProcEmpresa. ParamByName( 'vNome'). Value := 'TESTE';
 DM.SQLProcEmpresa. ParamByName( 'vCodigo' ).Value := 5;
 DM.SQLProcEmpresa. ExecProc;
 
 Para que eu possa testar... e não funciona... da o erro que eu
mencionei acima...
 Me ajudem por favor... pois não sei mais o que fazer...
 Desde já agradeço





   

Novo Yahoo! Cadê? - Experimente uma nova busca.
http://yahoo.com.br/oqueeuganhocomisso 

[As partes desta mensagem que não continham texto foram removidas]



Res: [delphi-br] Re: ORA-06502 - Delphi

2007-07-16 Por tôpico Josir Gomes
Então Ribamar,

grandes chances de ser problema de incompatibilidade do Oracle Client
e do Dbexpress com o campo CHAR. Eu não posso te dar certeza pois não
tenho experiência concreta com DbExpress. Para contornar o problema:

1) Verifique se os tipos estão corretos na propriedade Params no
componente StoreProc.
2) Verifique se o campo CHAR está realmente preenchido. no BDE, o erro
ocorre quando se passa NULL para um campo CHAR.

No SQLNavigator vai funcionar porque, apesar de ser feito em Delphi,
ele (graças a Deus) usa ODAC!!! o SQLDetective que é melhor e mais
barato que o SQLNavigator também é feito em Delphi/ODAC.

Boa Sorte,
Josir.

--- Em delphi-br@yahoogrupos.com.br, Ribamar Sousa [EMAIL PROTECTED] escreveu

 Bom Dia,
 
 EMPRESA.cod_empresa é NUMBER(6)
 EMPRESA.nome é VARCHAR2(30)
 
 O Acesso ao banco que estou utilizando é o DBExpress, e em relação
ao .Value, eu testei com .AsInteger, .AsString e não funcionou, estou
tentando rodar direto do SQLStoredProc(DBExpress), atribuindo nos
Parametros, no campo VALUE de cada um, o determinado valor e tentando
rodar... e também dá o mesmo erro, eu acho que seja alguma
configuração, não sei bem, pois eu rodei a procedure pelo SQLNavigator
e funcionou corretamente.
 
 Aguardo respostas.
 
 Desde já agradeço.
 
 Ribamar Sousa Filho
 
 
 - Mensagem original 
 De: Josir Gomes [EMAIL PROTECTED]
 Para: delphi-br@yahoogrupos.com.br
 Enviadas: Segunda-feira, 16 de Julho de 2007 8:28:55
 Assunto: [delphi-br] Re: ORA-06502 - Delphi
 
 Olá Ribamar,
 
 1) pela declaração da procedure, não dá para saber qual é o tipo de
 EMPRESA.cod_ empresa%TYPE. Ele é numérico ou char?
 
 2) vc não especificou com que engine está acessando o banco. É BDE,
 DbExpress, ODAC??
 
 3) Se for BDE, não utilize parametros com CHAR pois as vezes dá
 problema de incompatibilidade entre o Oracle e o BDE - Bosta De
Engine :)
 
 4) Uma dica: procure não utilizar .Value e sim .AsString .AsInteger.
 Isso serve tanto para ParamByName como FieldByName.
 Além do código ficar + rápido, o compilador lhe ajuda na hora de
 interpretar conversões de tipo.
 
 Boa Sorte,
 Josir.
 
 --- Em [EMAIL PROTECTED] os.com.br, Ribamar Sousa titofeiu@ .
escreveu
 
  Boa Noite Pessoal,
  estou fazendo uma aplicação Delphi x Oracle, e criei uma procedure
 para Inserir, Alterar e Excluir em uma tabela SIMPLES, que contem
 apenas o CODIGO e NOME
  e no Delphi estou utilizando o componenten SQLStoredProc, para
 acessar a Procedure e enviar os dados para que seja executado a
procedure.
  A procedure está funcionando corretamente, pois fiz os testes pelo
 SQL Navigator, sendo que pelo Delphi dá o seguinte erro
  ORA-06502: PL/SQL: erro: erro de conversão de caractere em número
 numérico ou de valor
  ORA-06512: em line 1'
  
  Na procedure tem os seguintes campos...
  PROCEDURE EMPRESA_IAE
  ( vTipo in Char,
  vCodigo in EMPRESA.cod_ empresa%TYPE,
  vNome in EMPRESA.nome% TYPE)
  AS
  ...
  
  Então no DELPHI estou fazendo assim
  
  DM.SQLProcEmpresa. ParamByName( 'vTipo'). Value := 'I';
  DM.SQLProcEmpresa. ParamByName( 'vNome'). Value := 'TESTE';
  DM.SQLProcEmpresa. ParamByName( 'vCodigo' ).Value := 5;
  DM.SQLProcEmpresa. ExecProc;
  
  Para que eu possa testar... e não funciona... da o erro que eu
 mencionei acima...
  Me ajudem por favor... pois não sei mais o que fazer...
  Desde já agradeço
 
 
 
 
 



 Novo Yahoo! Cadê? - Experimente uma nova busca.
 http://yahoo.com.br/oqueeuganhocomisso 
 
 [As partes desta mensagem que não continham texto foram removidas]





RES: [delphi-br] Re: ORA-06502 - Delphi

2007-07-16 Por tôpico Davi Eduardo Borges Wall
Ok li meio por cima este post.

 

Se esse for um problema de passagem de parâmetros. (parambyname) há Tb uma 
possibilidade de haver um problema com o asinteger;

 

Existe uma particularidade do Oracle quando um campo tipo NUMERIC for maior que 
9, por exemplo NUMERIC(10,0)

Eh necessário passar o parâmetro como AsBCD.

Se este for seu caso, tente passar o parâmetro ali como AsBCD e não como as 
Integer;

Eu achei isto no Google após algumas pesquisas.

 

[]'s

 

 

De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Josir 
Gomes
Enviada em: segunda-feira, 16 de julho de 2007 11:19
Para: delphi-br@yahoogrupos.com.br
Assunto: Res: [delphi-br] Re: ORA-06502 - Delphi

 

Então Ribamar,

grandes chances de ser problema de incompatibilidade do Oracle Client
e do Dbexpress com o campo CHAR. Eu não posso te dar certeza pois não
tenho experiência concreta com DbExpress. Para contornar o problema:

1) Verifique se os tipos estão corretos na propriedade Params no
componente StoreProc.
2) Verifique se o campo CHAR está realmente preenchido. no BDE, o erro
ocorre quando se passa NULL para um campo CHAR.

No SQLNavigator vai funcionar porque, apesar de ser feito em Delphi,
ele (graças a Deus) usa ODAC!!! o SQLDetective que é melhor e mais
barato que o SQLNavigator também é feito em Delphi/ODAC.

Boa Sorte,
Josir.

--- Em delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br , 
Ribamar Sousa [EMAIL PROTECTED] escreveu

 Bom Dia,
 
 EMPRESA.cod_empresa é NUMBER(6)
 EMPRESA.nome é VARCHAR2(30)
 
 O Acesso ao banco que estou utilizando é o DBExpress, e em relação
ao .Value, eu testei com .AsInteger, .AsString e não funcionou, estou
tentando rodar direto do SQLStoredProc(DBExpress), atribuindo nos
Parametros, no campo VALUE de cada um, o determinado valor e tentando
rodar... e também dá o mesmo erro, eu acho que seja alguma
configuração, não sei bem, pois eu rodei a procedure pelo SQLNavigator
e funcionou corretamente.
 
 Aguardo respostas.
 
 Desde já agradeço.
 
 Ribamar Sousa Filho
 
 
 - Mensagem original 
 De: Josir Gomes [EMAIL PROTECTED]
 Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br 
 Enviadas: Segunda-feira, 16 de Julho de 2007 8:28:55
 Assunto: [delphi-br] Re: ORA-06502 - Delphi
 
 Olá Ribamar,
 
 1) pela declaração da procedure, não dá para saber qual é o tipo de
 EMPRESA.cod_ empresa%TYPE. Ele é numérico ou char?
 
 2) vc não especificou com que engine está acessando o banco. É BDE,
 DbExpress, ODAC??
 
 3) Se for BDE, não utilize parametros com CHAR pois as vezes dá
 problema de incompatibilidade entre o Oracle e o BDE - Bosta De
Engine :)
 
 4) Uma dica: procure não utilizar .Value e sim .AsString .AsInteger.
 Isso serve tanto para ParamByName como FieldByName.
 Além do código ficar + rápido, o compilador lhe ajuda na hora de
 interpretar conversões de tipo.
 
 Boa Sorte,
 Josir.
 
 --- Em [EMAIL PROTECTED] os.com.br, Ribamar Sousa titofeiu@ .
escreveu
 
  Boa Noite Pessoal,
  estou fazendo uma aplicação Delphi x Oracle, e criei uma procedure
 para Inserir, Alterar e Excluir em uma tabela SIMPLES, que contem
 apenas o CODIGO e NOME
  e no Delphi estou utilizando o componenten SQLStoredProc, para
 acessar a Procedure e enviar os dados para que seja executado a
procedure.
  A procedure está funcionando corretamente, pois fiz os testes pelo
 SQL Navigator, sendo que pelo Delphi dá o seguinte erro
  ORA-06502: PL/SQL: erro: erro de conversão de caractere em número
 numérico ou de valor
  ORA-06512: em line 1'
  
  Na procedure tem os seguintes campos...
  PROCEDURE EMPRESA_IAE
  ( vTipo in Char,
  vCodigo in EMPRESA.cod_ empresa%TYPE,
  vNome in EMPRESA.nome% TYPE)
  AS
  ...
  
  Então no DELPHI estou fazendo assim
  
  DM.SQLProcEmpresa. ParamByName( 'vTipo'). Value := 'I';
  DM.SQLProcEmpresa. ParamByName( 'vNome'). Value := 'TESTE';
  DM.SQLProcEmpresa. ParamByName( 'vCodigo' ).Value := 5;
  DM.SQLProcEmpresa. ExecProc;
  
  Para que eu possa testar... e não funciona... da o erro que eu
 mencionei acima...
  Me ajudem por favor... pois não sei mais o que fazer...
  Desde já agradeço
 
 
 
 
 
 

__
 Novo Yahoo! Cadê? - Experimente uma nova busca.
 http://yahoo.com.br/oqueeuganhocomisso 
 
 [As partes desta mensagem que não continham texto foram removidas]


 



[As partes desta mensagem que não continham texto foram removidas]