如何从过程返回一个结果集

时间:2015-02-05 21:51:26

标签: sql sql-server sybase

我正在尝试使用旧版本的Sybase返回随机选择的行。

这是我到现在为止所提出的。似乎每行都在自己的结果集中返回。

我怎样才能"分组"单个结果集中的所有选定行?

create procedure samplerecords
    @pcttosample float as

    declare @val varchar(255)
    declare @cointoss float

    declare curs cursor for
         select foo from bar
         at isolation read uncommitted

    open curs

    fetch curs into @val

    while (@@sqlstatus != 2)
    begin

        select @cointoss=rand()*100
        if @cointoss <= @pcttosample
            select @val

        fetch curs into @val
    end
    close curs

return

1 个答案:

答案 0 :(得分:1)

如果你需要坚持使用rand()函数的方法,那么只需将值列表插入到临时表中,然后在最后一起选择它们。

create table #t (val varchar(255) not null) -- add at the beginning
...
insert into #t (val) values (@val) -- replaces the select @val
...
select val from #t -- add at the end