Fórum ADOQuery erro: objeto paramiter definido incorretamente #350707
17/12/2007
0
Ola estou programando em c++ Builder e estou usando Oracle
Tentei o seguinte codigo:
Quando eu rodo no sqldeveloper ele insere normalmente mas ao executar no ADOquery da o seguinte erro:
´Objeto paramter definido incorretamente . As informações sao incosistentes ou incompletas.´
Achei q a execução do SQLQuery era a mesma do SQL DEVELOPER
vo manda o procedure e o package
e o procedure
Se alguem puder me explicar como eu resolvo isso.. ou como esse objeto AdoQuery funciona ou alguma luz rsrs..
num sei mais o q faze..
flw
Tentei o seguinte codigo:
TADOQuery *ExecSQL = FPrincipal->SQLQuery;
/* Salvar dados */
ExecSQL->SQL->Clear();
ExecSQL->SQL->Add("DECLARE "
"v_novo_cand package_candidato_info.novo_candidato;"
"v_tel_cand package_candidato_info.telefone_candidato;"
"v_tipo_cand package_candidato_info.tipo_candidato;"
"v_cand_estag package_candidato_info.candidato_estagiario;"
"v_cur_cand package_candidato_info.curriculo_candidato;"
"v_form_cand package_candidato_info.formacao_candidato;"
"v_emp_ant_cand package_candidato_info.empregoAnt_candidato;"
"BEGIN "
" v_tel_cand(1).candidato := 1;"
"v_tel_cand(1).telefone := ´99217891´;"
"insere_candidato(v_novo_cand, v_tel_cand, v_tipo_cand, v_cand_estag, v_cur_cand, v_form_cand, v_emp_ant_cand);"
"End;");
ExecSQL->ExecSQL();Quando eu rodo no sqldeveloper ele insere normalmente mas ao executar no ADOquery da o seguinte erro:
´Objeto paramter definido incorretamente . As informações sao incosistentes ou incompletas.´
Achei q a execução do SQLQuery era a mesma do SQL DEVELOPER
vo manda o procedure e o package
create or replace PACKAGE package_candidato_info IS TYPE novo_candidato IS TABLE OF Candidato¬ROWTYPE INDEX BY binary_integer; /*Coleção da tabela Candidato*/ TYPE telefone_candidato IS TABLE OF TelefoneCandidato¬ROWTYPE INDEX BY binary_integer; /*Coleção da tabela TelefoneCandidato*/ TYPE tipo_candidato IS TABLE OF TipoCandidato¬ROWTYPE INDEX BY binary_integer; /*Coleção da tabela TipoCandidato*/ TYPE candidato_estagiario IS TABLE OF Estagiario¬ROWTYPE INDEX BY binary_integer; /*Coleção da tabela Estagiario*/ TYPE curriculo_candidato IS TABLE OF Curriculo¬ROWTYPE INDEX BY binary_integer; /*Coleção da tabela Curriculo*/ TYPE formacao_candidato IS TABLE OF Formacao¬ROWTYPE INDEX BY binary_integer; /*Coleção da tabela Formação*/ TYPE empregoAnt_candidato IS TABLE OF EmpregoAnt¬ROWTYPE INDEX BY binary_integer; /*Coleção da tabela EmpregoAnt*/ END package_candidato_info;
e o procedure
create or replace PROCEDURE insere_candidato ( p_cand_info IN package_candidato_info.novo_candidato, p_cand_telefone IN package_candidato_info.telefone_candidato, p_cand_tipo IN package_candidato_info.tipo_candidato, p_cand_estag IN package_candidato_info.candidato_estagiario, p_cand_cur IN package_candidato_info.curriculo_candidato, p_cand_form IN package_candidato_info.formacao_candidato, p_cand_emp_ant IN package_candidato_info.empregoAnt_candidato) IS v_n NUMBER := 0;--Armazena o tamanho das coleções para que a operação de COUNT não tenha que ser realizada a cada iteração do for v_candidato NUMBER := 0; BEGIN --Insere na tabela Candidato, permite inserção de vários candidatos em uma única chamada v_n := p_cand_info.COUNT; FOR i IN 1 .. v_n LOOP INSERT INTO Candidato VALUES (p_cand_info(i).codigo, p_cand_info(i).RG, p_cand_info(i).CPF, p_cand_info(i).nome, p_cand_info(i).rua, p_cand_info(i).numero, p_cand_info(i).bairro, p_cand_info(i).cep, p_cand_info(i).cidade, p_cand_info(i).estado, p_cand_info(i).tipocadastro, p_cand_info(i).lideranca, p_cand_info(i).conhecimentoTecEspec, p_cand_info(i).conhecimentoGeral, p_cand_info(i).relSocial, p_cand_info(i).tolHierarquia, p_cand_info(i).salMinimo, p_cand_info(i).salMaximo); END LOOP;--fim das inserções em candidato /*Insere na tabela TelefoneCandidato*/ v_n := p_cand_telefone.COUNT; FOR i IN 1 .. v_n LOOP SELECT COUNT(*) INTO v_candidato FROM Candidato WHERE p_cand_telefone(i).candidato = Candidato.codigo; IF (v_candidato <> 0) THEN /*Verifica se o candidato que será inserido em TelefoneCandidato existe em Candidato*/ INSERT INTO TelefoneCandidato VALUES (p_cand_telefone(i).candidato, p_cand_telefone(i).telefone); END IF; /*se não existe, ignora a inserção*/ v_candidato := 0; END LOOP; /*fim das inserções em TelefoneCandidato*/ ...(o resto segue a ideia) END insere_candidato;
Se alguem puder me explicar como eu resolvo isso.. ou como esse objeto AdoQuery funciona ou alguma luz rsrs..
num sei mais o q faze..
flw
Vitorrm
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)