很奇怪的存储过程问题。有注释,来帮忙看看

roger_1000 2011-03-03 02:59:49

create proc zfpro
@kssj nvarchar(50),@jssj nvarchar(50),@hsxz nvarchar(50) --输入参数三个
as
declare @count int,@ksjg varchar(50),@jsjg varchar(50),@cj varchar(50),@i int,@zzf varchar(50),@xgpname nvarchar(50),@xgpid nvarchar(50),@xdp nvarchar(50),@zcjl nvarchar(50),@zhsl nvarchar(50),@dpp nvarchar(50)
select @count=count(id) from gpinfo
create table #lsb(id int,zzf varchar(50),xgpid nvarchar(50),xgpname nvarchar(50),xdp nvarchar(50),zcjl nvarchar(50),zhsl nvarchar(50)) --创建临时表
declare @id int
declare curA cursor for select id from gpinfo
open curA
fetch next from curA
into @id
while @@fetch_status = 0
begin
select @xgpid=gpid ,@xgpname=gpname,@xdp=husheng from gpinfo where id=@id ----根据ID查询基本信息
select @ksjg=spj from gpeinfo where dat=@kssj and gpid=@xgpid ---起始日收盘价
select @jsjg=spj from gpeinfo where dat=@jssj and gpid=@xgpid ----终止日收盘价
select @zcjl=sum(convert(float,cast(cjl as float))),@zhsl=sum(convert(float,cast(hsl as float))) from gpeinfo where gpid=@xgpid --查询总成交量、总换手率
set @cj=convert(float,cast(@jsjg as float))-convert(float,cast(@ksjg as float)) ----查询2日涨幅
set @zzf=(convert(float,cast(@jsjg as float))-convert(float,cast(@ksjg as float)))/convert(float,cast(@ksjg as float)) --查询涨幅%
insert into #lsb(id,zzf,xgpid,xgpname,xdp,zcjl,zhsl) values (@id,@zzf,@xgpid,@xgpname,@xdp,@zcjl,@zhsl) --向临时表插入数据

FETCH NEXT FROM curA INTO @id ---下一条
end
close curA
deallocate curA

if (@hsxz='深市') --三种情况下 执行的sql语句不同
begin
select * from #lsb where xdp='深市' order by xgpid desc
end

else if ( @hsxz='沪市' )
begin
select * from #lsb where xdp='沪市' order by xgpid desc
end
else
begin
select * from #lsb where xdp='深市' or xdp='沪市' order by xgpid desc
end

go


如上为:存储过程部分

下面为 ASP 代码 ,调用存储过程。 并且将存储过程的临时表数据放到 记录集的代码


dim kdat,zdat,hss1,sqlproc,rs

kdat="2011-2-17"
zdat="2011-2-18"
hss1=""

sqlproc = "EXECUTE zfpro '"&kdat&"','"&zdat&"','"&hss1&"'"
response.Write sqlproc
Set rs = cnn.Execute(sqlproc)

response.Write rs("xgpid") '输出第一行的一个ID 。测试所用


我的问题是。如果 我将 kdat 和 Zdat 一起输入时间 这样没办法得到数据。其中一个写时间。另一个空着反而出来数据。但是 很显然是错的。不是我要的数据。 为什么。 kdat 和 zdat 同时输入的时候 出不来数据呢。。
...全文
125 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
roger_1000 2011-03-03
  • 打赏
  • 举报
回复
谁来帮帮我吧。。。
roger_1000 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]
那不是SQL的问题了 是你ASP调用的问题
[/Quote]

为什么 我只写一个时间 比如写 kdat='2011-2-17' zdat='' 空着 或者反之。都可以显示出数据。

两个一起写 却不行了。 我再 sql 查询分析器 运行。
EXECUTE dbo.zfpro '2011-2-17','2011-2-18','沪市'
却是可以的。。。迷茫
roger_1000 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiao_ai_mei 的回复:]
就是说,在sql里是好的?

那就看ASP里传进去的参数对 不对。对的话,应该是调用显示结果的问题
[/Quote]

sql里是好的。传的参数也是正确的。 我如果只输入一个 时间 调用显示结果 也可以显示的。

就是 2个一起输入 就显示不出来了
--小F-- 2011-03-03
  • 打赏
  • 举报
回复
那不是SQL的问题了 是你ASP调用的问题
--小F-- 2011-03-03
  • 打赏
  • 举报
回复
在ASP里面写成存储过程调用?
Xiao_Ai_Mei 2011-03-03
  • 打赏
  • 举报
回复
就是说,在sql里是好的?

那就看ASP里传进去的参数对 不对。对的话,应该是调用显示结果的问题
roger_1000 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiao_ai_mei 的回复:]
在里面加
print @变量 。显示下,。调试调试,

直接这样看,看不出来什么情况
[/Quote]

是这样的 、我在 查询分析器里 这样运行
EXECUTE dbo.zfpro '2011-2-17','2011-2-18','沪市'
两个时间一起输入是完全没有问题的。都可以 取得数据。

就是在asp 调用的时候不知道 为什么就不行了!
Xiao_Ai_Mei 2011-03-03
  • 打赏
  • 举报
回复
在里面加
print @变量 。显示下,。调试调试,

直接这样看,看不出来什么情况

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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