你所需要的是不是从存储过程里返回结果集?
在SQL SERVER的存储过程里可以直接返回一个或多个结果集
当然也可以通过将存储过程返回的结果集插入一临时表,再从临时表中选取结果,
例如 ,建临时表#tmptbl,执行insert #tmptbl EXEC sp_xyz,然后执行
Select * from #tmptbl 或对表中执行其它操作
 

解决方案 »

  1.   

    SELECT * FROM类型的查询是表示将一个表中所有字段的值都检索出来。但是写SELECT * 这种写法可能在今后数据库表结构改变时发生错误。比如说表中增加了一个字段,而原有程序并未对新增字段处理,这样会造成错误。可以在SELECT语句中显示指定表中所需字段,然后进行处理。写存储过程其实很容易,在SQL ENTERPRISE中生成存储过程框架声明中填入SELECT语句就可以了。至于如何编写SQL语句可参考SQL SERVER ONLINE BOOK。
      

  2.   

    在存储过程中可以用Select * from Table来返回结果集
    但是@result返回时就用错!
      

  3.   

    SQL Server7.0绝对可以,因为的存储过程可以返回一个结果集。Delphi中使用时必须用TQuery组件,SQL语句中用Exec 命令。当然,因是结果集,最好用DBGrid类似控件来接收结果。
      

  4.   

    Dou的回答好象可行,但是...,难道没有更简单的?
    主要是原来的程序用的是Interbase,存储过程都是这样调用的'select * from 存储过程',TQUERY.OPEN;不想对程序做太多动作.
    先谢谢大家,期待更优秀的答案.
      

  5.   

    首先必须声明一组变量,用于将数据集返回。
    DECLARE @FIELD1 varchar(100), @FIELD2 int声明一个游标
    DECLARE CURSOR bt FOR
    SELECT field1, field2 FROM tableOPEN bt
    FETCH NEXT FROM bt INTO @FIELD1, @FIELD2
    WHILE (@@FETCH_STATUE <> -1)
      /*这里可以加入你的处理程序*/
      FETCH NEXT FROM bt INTO @FIELD1, @FIELD2
    BEGIN
    END
    CLOSE bt我的Email:[email protected]
      

  6.   

    建意你看一下SQL的在线帮助,安装时已经存在!!
      

  7.   

    MSSQL的存贮过程支持返回数据集,可以将变量声明为OUTPUT或select @变量
    use pubs
    go
    1)
    create proc Demo(@p char(20) output)
    as
    begin
    select @p=lname from authors
    end2)
    create proc Demo(@p char(20))
    as
    begin
    select @p=lname from authors
    select @p
    end