请问如何在视图中返回一个存储过程的结果集。。

请问如何在视图中返回一个存储过程的结果集。如

create view [v_aa]
as
exec p_aa
go
...全文
122 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 htl258 的回复:]
引用 15 楼 wggfcusmq 的回复:
引用 12 楼 soft_wsx 的回复:
试试不就知道了吗?


试了,不可以。

我试可以啊
[/Quote]

可以在视图中创建临时表吗?
htl258_Tony 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wggfcusmq 的回复:]
引用 12 楼 soft_wsx 的回复:
试试不就知道了吗?


试了,不可以。
[/Quote]
我试可以啊
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 soft_wsx 的回复:]
试试不就知道了吗?
[/Quote]

试了,不可以。
htl258_Tony 2009-09-01
  • 打赏
  • 举报
回复
CREATE PROC p_test
as
SELECT GETDATE() a

go


CREATE VIEW v_test
AS
SELECT * FROM OPENROWSET('SQLOLEDB.1','server=FI6\SQL2008;uid=sa;pwd=123','exec test11.dbo.p_test')

go

SELECT * FROM V_TEST
/*
a
2009-09-01 11:08:30.197
*/

CREATE FUNCTION FN_TEST()
RETURNS TABLE
AS
RETURN(
SELECT * FROM OPENROWSET('SQLOLEDB.1','server=FI6\SQL2008;uid=sa;pwd=123','exec test11.dbo.p_test')
)
go

SELECT * FROM FN_TEST()
/*
a
2009-09-01 11:08:30.197
*/
7楼厉害,这样函数里面都能变通实现了.
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chuifengde 的回复:]
SQL codeCREATEPROC p_testasSELECTGETDATE() agoCREATEVIEW v_testASSELECT*FROMOPENROWSET('SQLOLEDB.1','server=***;uid=sa;pwd=***','exec db.dbo.p_test')goSELECT*FROM v_test
[/Quote]

呵呵,有些麻烦,以后布署不方便。
soft_wsx 2009-09-01
  • 打赏
  • 举报
回复
试试不就知道了吗?
htl258_Tony 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wggfcusmq 的回复:]
引用 8 楼 ks_reny 的回复:
引用楼主 wggfcusmq 的回复:
请问如何在视图中返回一个存储过程的结果集。如

create view [v_aa]
as
exec p_aa
go

那就把存儲過程的代碼寫成視圖.



视图里面可以用临时表吗?我需要用到临时表。
[/Quote]
先看看7楼的.
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ks_reny 的回复:]
引用楼主 wggfcusmq 的回复:
请问如何在视图中返回一个存储过程的结果集。如

create view [v_aa]
as
exec p_aa
go

那就把存儲過程的代碼寫成視圖.
[/Quote]


视图里面可以用临时表吗?我需要用到临时表。
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 htl258 的回复:]
引用 4 楼 wggfcusmq 的回复:
视图有视图的方便,直接在sql中引用。。存储过程就不行啊。


但也要程序支持,看看你的过程是什么代码,看能否转为函数?
[/Quote]

嗯,谢谢,比较长一点,麻烦了。。

alter proc [p_met_cost]
as

if exists(select * from tempdb.dbo.sysobjects where id=object_id(N'tempdb.dbo.#Table_met_cost'))
drop table #Table_met_cost

create table #Table_met_cost
(
GID varchar(50),
Batch varchar(50),
GState varchar(50),
CostPrice Decimal(18,4)
)

insert into #Table_met_cost select GID,Batch,GState,CostPrice from v_Goods_Cost

--计算每个制令单从表中每条数据的具体成本 CostPrice总单据总成本 SinCostPrice 单条从表数据的成本

select A.*,isnull(B.Number,0) as Number,A.MScale*A.MCostPrice as CostPrice,
SinCostPrice= case isnull(B.Number,0) when 0 then 0 else A.MScale*A.MCostPrice/B.Number end from
(
---***联合制令单
select a.MOID,a.GID,a.GName,a.Batch,a.Model,a.Unit,a.MScale,isnull(b.CostPrice,0) as MCostPrice,
(select Date from Produce_MadeOrder C where C.MOID=a.MOID) as Date from v_Produce_MadeOrderDetail A left join (

--聚合生产批次成本
select A.Batch,sum(A.CostPrice) as CostPrice from (

--按生产批次求出每条物料投入从表数据的成本(存在问题,如果物料是自制的,则会读取错误)
select (select Batch from v_Cost_MetCost where MCID=A.MCID) as Batch,CostPrice=Number*
isnull(isnull((select top 1 CostPrice from #Table_met_cost
where GID=A.GID and Batch=A.Batch and GState=A.GState),(select top 1 CostPrice from Storage_KCAccount
where GID=A.GID and Batch=A.Batch and GState=A.GState)),0)
from Cost_MetCostDetail A
--

) A Group by A.Batch
--

) B on A.Batch=B.Batch

---***
) A left join v_pro_number B on A.Batch=B.Batch and A.GID=B.GID and B.GState='9002'



ks_reny 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 wggfcusmq 的回复:]
请问如何在视图中返回一个存储过程的结果集。如

create view [v_aa]
as
exec p_aa
go
[/Quote]
那就把存儲過程的代碼寫成視圖.
chuifengde 2009-09-01
  • 打赏
  • 举报
回复
CREATE PROC p_test
as
SELECT GETDATE() a

go

CREATE VIEW v_test
AS
SELECT * FROM OPENROWSET('SQLOLEDB.1','server=***;uid=sa;pwd=***','exec db.dbo.p_test')

go
SELECT * FROM v_test
htl258_Tony 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wggfcusmq 的回复:]
视图有视图的方便,直接在sql中引用。。存储过程就不行啊。

[/Quote]
但也要程序支持,看看你的过程是什么代码,看能否转为函数?
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dawugui 的回复:]
引用楼主 wggfcusmq 的回复:
请问如何在视图中返回一个存储过程的结果集。如

create view [v_aa]
as
exec p_aa
go

那不如直接用存储过程,把结果插入你个临表,然后查询临时表.
[/Quote]

临时表得不到及时更新
  • 打赏
  • 举报
回复
视图有视图的方便,直接在sql中引用。。存储过程就不行啊。
dawugui 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 wggfcusmq 的回复:]
请问如何在视图中返回一个存储过程的结果集。如

create view [v_aa]
as
exec p_aa
go
[/Quote]
那不如直接用存储过程,把结果插入你个临表,然后查询临时表.
黄_瓜 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 htl258 的回复:]
引用楼主 wggfcusmq 的回复:
请问如何在视图中返回一个存储过程的结果集。如

create view [v_aa]
as
exec p_aa
go

这样就不需要视图了,视图和自定义函数不支持exec
[/Quote]学习
htl258_Tony 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 wggfcusmq 的回复:]
请问如何在视图中返回一个存储过程的结果集。如

create view [v_aa]
as
exec p_aa
go
[/Quote]
这样就不需要视图了,视图和自定义函数不支持exec

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧