我要算一周7天中,每天的平均Ot,由于过程重复,用存储过程做,但没得到想要的结果。
create table #o(o_week char,avgot float) --创建临时表存储数据
select * from #ocreate proc computeot @week char
as
declare @avgot float(8)
select @avgot=avg(Ot) from link_model --link_model是事先建立好的视图,有需要的Ot一列,还有Ot对应的‘星期’
where model_week=@week
insert into #o values(@week,@avgot) --将数据插入临时表#o中,以备后用。declare @week char
select @week='星期二'
exec computect @week
比如我现在要算星期二的平均季节性系数,但是临时表里显示的星期那个字段没值(没显示任何),avgot的值则显示NULL。我试过单独算,能得到我要的结果。
declare @avgot float(8)
select @avgot=avg(Ot) from link_model
where model_week='星期二'
print @avgot
请帮我看看!
create table #o(o_week char,avgot float) --创建临时表存储数据
select * from #ocreate proc computeot @week char
as
declare @avgot float(8)
select @avgot=avg(Ot) from link_model --link_model是事先建立好的视图,有需要的Ot一列,还有Ot对应的‘星期’
where model_week=@week
insert into #o values(@week,@avgot) --将数据插入临时表#o中,以备后用。declare @week char
select @week='星期二'
exec computect @week
比如我现在要算星期二的平均季节性系数,但是临时表里显示的星期那个字段没值(没显示任何),avgot的值则显示NULL。我试过单独算,能得到我要的结果。
declare @avgot float(8)
select @avgot=avg(Ot) from link_model
where model_week='星期二'
print @avgot
请帮我看看!
select * from #o
GO
create proc computeot @week char
as
insert into #o Select @week,avg(Ot) from link_model where model_week=@week
GO
declare @week char
select @week='星期二'
exec computect @week
Create Function dbo.computeot(@week char(6))
Return table
AS
Return(
SELECT week=@week,Otavg=avg(Ot) from link_model where model_week=@week
)调用:
select * from dbo.computeot('星期二')
select * from #o
gocreate proc computeot
(@week char(10))
as
declare @avgot float(8)
select @avgot=avg(Ot) from link_model --link_model是事先建立好的视图,有需要的Ot一列,还有Ot对应的‘星期’
where model_week=@week
insert into #o values(@week,@avgot) --将数据插入临时表#o中,以备后用。
godeclare @week char(10)
select @week='星期二'
exec computeot @week
select * from #o
不能在存储过程外创建临时表,然后在存储过程中将数据保存到临时表中。
-----------------------------------------------------------------
錯誤,看看這個例子.
--建立測試環境
Create Table TEST(ID Int,Name Varchar(10))
Insert TEST Select 1,'A'
Union All Select 2,'B'
Union All Select 3,'C'Create Table #T(ID Int,Name Varchar(10))
GO
--建立存儲過程
Create Proc TESTProc
As
Insert #T Select * from TEST
GO
--測試
Select * from #T
EXEC TESTProc
Select * from #T
GO
--刪除測試環境
Drop Table TEST,#T
Drop Proc TESTProc
--結果
/*
--執行存儲過程前
ID Name--執行存儲過程後
ID Name
1 A
2 B
3 C
*/