CREATE proc find_count_num

@sql_texte      varchar(1000),
@result         int out
)
with encryption
as
begin
set @result=(select count(*) from sp_xx where +@sql_texte )
end
GO怎么不行呀,如何处理呢?

解决方案 »

  1.   

    set @result='select count(*) from sp_xx where ' +@sql_texte
      

  2.   


    CREATE proc find_count_num
    (  
    @sql_texte varchar(1000),
    @result int out
    )
    with encryption
    as
    begin
    set @result='(select count(*) from sp_xx where '+@sql_texte+' )'
    end
    GO
      

  3.   

    to:kaikai_kk
    帮人帮到底,呵呵。CREATE proc find_count_num

    @sql_text      varchar(1000),
    @result         int out
    )
    as
    begin
    set @result=('select count(*) from sp_xx '+@sql_text )
    end
    GO
    这是存储过程,但在delphi调用却提示出错,帮忙看一下,谢谢。
    错误信息:
    在将varchar值'select count(*) from sp_xx '转换int失败
    delphi调用过程如下:
    procedure TForm1.FormShow(Sender: TObject);
    var
     save_result:Integer ;
    beginwith ADOStoredProc1 do
     begin
     ProcedureName :='find_count_num';
     Parameters.Refresh ;
     Parameters.ParamByName('@sql_text').Value :='';
     Parameters.ParamByName('@result').Value :=0; ADOStoredProc1.ExecProc;
     save_result:=0;
     save_result:=Parameters.ParamByName('@result').Value;
    end;
      

  4.   

    @result定义的是int,最后返回的是varchar,所以出错select @result=count(*) from sp_xx '+@sql_text
      

  5.   

    to kaikai_kk:
    还是不行,请大侠帮着好好看看,分不够另外开贴。
      

  6.   

    掉了个where
      

  7.   

    CREATE proc find_count_num
    (  
    @sql_text nvarchar(1000)='',
    @result int output
    )
    as
    begin
    set @sql_text=N'select @cnt=count(*) from tsyslog '+@sql_text
    exec sp_executesql @sql_text,N'@cnt int output',@result output
    end
    GO
      

  8.   

    tsyslog这是我本机的一个表名,我测试用的,你改回去