如何获得ExecSQL的返回值,并显示给memo?不光执行select语句,还有执行其他的存储过程,比如xp_cmdshell。

解决方案 »

  1.   

    我就是想执行一次execsql后,将返回值显示到memo中,再执行其他的execsql后再显示到memo中
      

  2.   

    执行execsql那块都已经完成了,现在就是不知道如何获得返回值,因为要执行的sql语句不光有select、updata这样的语句,也有调用存储过程和扩展存储过程的语句,不知道获得返回值是不是通用的。
      

  3.   

    要么执行完后再用SELECT 去提取,要么并到一个存储过程中,通过存储过程的执行返回需要的值.
      

  4.   

    1、显示给memo:
    不能用execsql,要用open。因为execsql不返回值;而open则返回数据集2、执行其他的存储过程
    需要在存储过程中定义输出参数
      

  5.   

    樓主 你的存儲過程在查詢分析器中有返回值嗎? 要是有的話.可以用下面的方式得到返回值.  with adoquery do
      begin
       close;
       sql.clear;
       sql.add('exec  Proc_name (:A,:B,...)');
       parameters.ParamByName('A').Value:='';
       parameters.ParamByName('B').Value:='';
       Execsql;
      end;
      adoquery1.Fields[0].Value 這個是返回的第一列的值.
      依次類推.
      

  6.   

    楼主,你的意思是,存储过程中有N步,每一步都要在memo里显示一个返回值?
    有两种方法:
    1. 中间过程记录每一步的返回值,最后合并成一个结果集返回。
    如:  update ...
      set @error1=@@error  --表示执行结果,0表示没错误,其他值表示错误代码
      delete ...
      set @error2=@@error
      ...
      select @error1 error1, @error2 error2, ...  --一起返回
    2. 把这N步分开来调用,前台每次调用一步,得到一个返回值,如:  if @key=1
      begin
        update ...  --第一步
        select @@error error1
        return
      end  if @key=2
      begin
        delete ...  --第二步
        select @@error error2
        return
      end