SQL SERVER2000存储过程怎样调用另外一个储存过程的结果集?
我已有一个存储过程,通过“EXECProc1姓名”能返回一条字段很多的结果集(例如姓名,年龄,结婚次数.....)。现在我想再建一个存储过程,查询一个表,每次取出一个关键...
我已有一个存储过程,通过“EXEC Proc1 姓名”能返回一条字段很多的结果集(例如姓名,年龄,结婚次数.....)。
现在我想再建一个存储过程,查询一个表,每次取出一个关键词,循环调用刚才那个存储过程,大致是:
Select 姓名 from 名单库
for n=1 to rowcount
{ name=row[n][0]
EXEC Proc1 姓名
n++
}//以上语法肯定错误,只为说明问题
最后返回一个完整的数据表:
姓名 年龄 结婚次数 离婚次数 再婚次数 再了又离次数 所有老婆年龄和.......)。
张三 80 8 5 2 3 78.....
李四 60 7 5 9 9 76.....
王五 52 9 4 5 4 92.....
..............
怎样写这个存储过程? 展开
现在我想再建一个存储过程,查询一个表,每次取出一个关键词,循环调用刚才那个存储过程,大致是:
Select 姓名 from 名单库
for n=1 to rowcount
{ name=row[n][0]
EXEC Proc1 姓名
n++
}//以上语法肯定错误,只为说明问题
最后返回一个完整的数据表:
姓名 年龄 结婚次数 离婚次数 再婚次数 再了又离次数 所有老婆年龄和.......)。
张三 80 8 5 2 3 78.....
李四 60 7 5 9 9 76.....
王五 52 9 4 5 4 92.....
..............
怎样写这个存储过程? 展开
3个回答
展开全部
1.把你的过程改成函数,用outer apply 关联就可以了,这种方法不用游标。
create function fn_fn1(姓名)
return table
as
begin
return(
select * from table
)
end
select * from 名单库 a outer apply dbo.fn_pro1(a.姓名)
2.把两个过程合并成一个,根据你的描述是可以做到的。用name连接。
create function fn_fn1(姓名)
return table
as
begin
return(
select * from table
)
end
select * from 名单库 a outer apply dbo.fn_pro1(a.姓名)
2.把两个过程合并成一个,根据你的描述是可以做到的。用name连接。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建个临时表,将存储过程的结果插入,再循环select 完了删除临时表。以上在循环内。。你看是否可行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用游标
更多追问追答
追问
请问能说具体点吗?
能不用游标吗?用临时表?
追答
--声明一个游标
Declare cur_name Cursor for
Select 姓名 from 名单库
declare @name
--打开游标
Open cur_name
--循环并提取记录
Fetch Next From cur_name Into @name
While ( @@Fetch_Status=0 )
begin
-- 调用你的另一sp
Fetch Next From cur_name into @rpisall
end
--关闭游标
Close cur_name
--释放游标
Deallocate cur_name
用临时表可以,但是效率。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询