anya 2004年12月21日
小不好意思,请问如何执行一个生成临时表的存储过程
我想生成一个价格行情表,存储过程如下,现在知道起始时间、结束时间分别是lda_start,lda_end,
请问在.net(c#)中如何调用执行这个存储过程.小妹很愚笨,请多指教。
CREATE PROCEDURE OPR.WEB_SP_GETPRICESINFO
(
@startTime datetime ,
@endTime datetime
)
AS
if @startTime is null
begin
raiserror('没有指定要检索的单价的起始时间。', 16, 1)
return
end

if @endTime is null
begin
raiserror('没有指定要检索的单价的终止时间。', 16, 1)
return
end

if @startTime > @endTime
begin
declare @time datetime
set @time = @endTime
set @endTime = @startTime
set @startTime = @time
end

create table #WEB_PRICESINFO
(
CODE nvarchar(64) ,
NAME nvarchar(64) ,
ENAME nvarchar(64) ,
SPECCODE nvarchar(64) ,
SPECDESCRIPTION nvarchar(256) ,
AVGPRICE money ,
MAXPRICE money ,
MINPRICE money ,
PAVGPRICE money ,
REMARKS nvarchar(256) ,
SUMMARY nvarchar(1000)
)

declare @code bigint
declare @name nvarchar(64)
declare @abstract nvarchar(1000)

declare price_cur cursor for
select CODE, NAME, ABSTRACT from OPR.GBCODES where CATEGORY = 4001000

open price_cur
fetch next from price_cur into @code, @name, @abstract
while @@FETCH_STATUS = 0
begin
insert into #WEB_PRICESINFO
select convert(nvarchar(64), @code) ,
@name ,
substring(@abstract, 0, 64) ,
convert(nvarchar(64), SPECCODE) ,
N'' ,
avg(PRICE) ,
max(PRICE) ,
min(PRICE) ,
avg(PRICE) ,
N'IC 卡交易' ,
substring(@abstract, 65, len(@abstract) - 64)
from OPR.ICTRADES
where (OPR.ICTRADES.VEGCODE = @code) and (OPR.ICTRADES.FIRSTWEIGHTIME between @startTime and @endTime)

if @@ERROR <> 0
begin
close price_cur
deallocate price_cur
return
end

if @@ROWCOUNT = 0
begin
insert into #WEB_PRICESINFO values(convert(nvarchar(64), @code), @name, substring(@abstract, 0, 64), N'', N'', 0, 0, 0, 0, N'无交易记录', substring(@abstract, 65, len(@abstract) - 64))
if @@ERROR <> 0
begin
close price_cur
deallocate price_cur
return
end
end
fetch next from price_cur into @code, @name, @abstract
end

close price_cur
deallocate price_cur

select * from #WEB_PRICESINFO
return

GO
...全文
103 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告