大哥们:
    小弟的毕业设计已经接近尾声,可是最后我在用DBGrid显示存储过程的查询结果的时候却没什么响应.我用SQL Server2000
比如我的一个存储过程是:
  create proc  sp_qqq
  @a varchar,
  @b varchar outpur,
  @c varchar output
as
begin
    select @b=table_sss.B,@c=table_sss.C 
    From table_sss
    where table_sss.A=@a
end
我在delphi中用BDEstoredproc调用了这个过程
storedproc1.prepare;
sroredproc1.parambyname('@a').asstring:=Edit1.text;
storedproc1.execproc;
用datesorce1连了DBGrid1 和storedproc1
这样可以吗?我运行后DBGrid没什么反应,
如果把存储过程中的output 去掉
也不行
大哥们看我是哪个地方有毛病呢?
用query就能顺利查到这些内容的

解决方案 »

  1.   

    create proc  sp_qqq
      @a varchar,
      @b varchar outpur,
      @c varchar output
    as
    begin
        select @b=table_sss.B,@c=table_sss.C 
        From table_sss
        where table_sss.A=@a;    select @b, @c
    end
      

  2.   

    storedproc1.execproc;--->storedproc1.open;
      

  3.   

    zwjchina(蒲石)大哥说的直接这样:
    create proc  sp_qqq
      @a varchar,
      @b varchar ,
      @c varchar 
    as
    begin
        select @b=table_sss.B,@c=table_sss.C 
        From table_sss
        where table_sss.A=@a;
    end行马?
      

  4.   

    用dbgrid?这样好点
    create proc  sp_qqq
      @a varchar,
    as
    begin
        select table_sss.B,table_sss.C 
        From table_sss
        where table_sss.A=@a
    end在delphi中
    with tquery1 do
    begin
      close;
      sql.clear;
      sql.add('exec sp_ppp ' + a);
      open
    end;
    然后将dbgrid和tquery1关联
      

  5.   

    boz正解
    使用open代替execproc
    open-->有返回记录集
    execproc->无返回记录集
      

  6.   

    你语句: 
    select @b=table_sss.B,@c=table_sss.C 
        From table_sss
        where table_sss.A=@a;仅仅是把数据存入变量中,并不返回数据。这个你可以在SQL Server的查询分析器里面测试一下。所以后面要加一句:select @b, @c最后,后面几位说的使用open而不是使用execproc也是有道理的。
    因为我使用存储过程的使用都是直接使用的TQuery或者TAdoQuery,没有用过BDEstoredproc
    ,所以不敢妄加评论。
      

  7.   

    我有一张帖看能否起到作用:
    http://expert.csdn.net/Expert/topic/1859/1859495.xml?temp=.9113275
      

  8.   

    要返回数据集用Open.不要用ExecProc
      

  9.   

    firetoucher(风焱) 正确了 
    open 即可