Res: [delphi-br] Re: ORA-06502 - Delphi
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
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
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]