[firebase-br] erro no execute statement!!!!

NIlton nilton em idesa.com.br
Seg Jun 26 07:38:56 -03 2006


Por favor me ajudem!!!!!!

Estou montando um sp para inserir registros em uma tabela, tenho que passar
parâmetros do delphi para a sp montar um select, quando executo a sp retorna
o seguinte erro:

Unsuccessful execution caused by an unavailable resource.
Variable type (position 3) in EXECUTE STATEMENT 'select
turma,nome,numero,nota1,faltas1,nota2,falta' INTO does not match return.

Ou seja a string executada pelo for execute statement é truncada.
A seguir mando o código da minha sp.

CREATE PROCEDURE SP_PLANILHAS (
    cod_turma integer,
    exercicio integer,
    datahora varchar(19),
    titulo varchar(95),
    opcao1 varchar(15),
    opcao2 varchar(15),
    opcao3 varchar(15),
    opcao4 varchar(15))
as
declare variable sql2 varchar(1024);
declare variable sql1 varchar(1024);
declare variable sql varchar(1024);
declare variable materia integer;
declare variable old_numero integer;
declare variable tmp_nome varchar(45);
declare variable tmp_turma varchar(40);
declare variable tmp_num_cham integer;
declare variable tmp_opcao1 varchar(10);
declare variable tmp_opcao2 varchar(10);
declare variable tmp_opcao3 varchar(10);
declare variable tmp_opcao4 varchar(10);
declare variable tmp_conteudo varchar(20);
declare variable tmp_discip varchar(7);
declare variable tmp_lsql varchar(500);
begin
  old_numero=0;
  sql1='';
  sql2='';
  sql='';
  tmp_lsql='select turma,nome,numero,'|| :opcao1 ||','|| :opcao2 || ',' ||
:opcao3 || ','
      || :opcao4 ||',nome_res from vavaliaetapas where cod_turma = '
      ||:COD_TURMA ||' and ano_letivo = '|| :exercicio ||
      ' order by numero';
  for execute statement :tmp_lsql
      into :tmp_turma, :tmp_nome, :tmp_num_cham, :tmp_opcao1, :tmp_opcao2,
:tmp_opcao3,
           :tmp_opcao4, :tmp_discip
  do
  begin
    if (old_numero <> :tmp_num_cham) then
      begin
        materia = 1;
        if (old_numero <> 0) then
          begin
            sql1 = 'insert into tmp_lst_planilhas
(turma,exercicio,datahora,titulo,nome,numero'||sql1;
            sql2 = 'values (''' || :tmp_turma || ''',' || :exercicio ||
',''' || :datahora || ''','''
                   ||:titulo || ''',''' || :tmp_nome || ''',' ||
:old_numero||sql2;
            sql = sql1 || ') ' || sql2 || ');';
            execute statement :sql;
            sql1='';
            sql2='';
          end
        else
          begin
 
tmp_conteudo=:tmp_opcao1||'/'||:tmp_opcao2||'/'||:tmp_opcao3||'/'||:tmp_opca
o4;
            sql1 = sql1 || ',discip' || cast(materia as char(1)) ||
',conteudo' ||
                   cast(materia as char(1));
            sql2 = sql2 || ',''' || :tmp_discip || ''',''' || :tmp_conteudo
|| '''';
            materia = materia + 1;
            old_numero = :tmp_num_cham;
          end
       end
    else
      begin
 
tmp_conteudo=:tmp_opcao1||'/'||:tmp_opcao2||'/'||:tmp_opcao3||'/'||:tmp_opca
o4;
        sql1 = sql1 || ',discip' || cast(materia as char(1)) || ', conteudo'
||
               cast(materia as char(1));
        sql2 = sql2 || ',''' || :tmp_discip || ''',''' || :tmp_conteudo ||
'''';
        materia = materia + 1;
      end
    suspend;
  end
end

se tiver alguém par me dar uma luz eu agradeço imensamente.








Mais detalhes sobre a lista de discussão lista