| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1067 人关注过本帖
标题:[求助]关于存储过程的编写出现的问题
只看楼主 加入收藏
duck3503
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-3-26
收藏
 问题点数:0 回复次数:18 
[求助]关于存储过程的编写出现的问题
存储过程定义如下:
CREATE PROCEDURE CAL_GPA
@SNO CHAR(7),
@GPA DEC(2,0) OUTPUT
AS
BEGIN
declare @GP4 DEC(2,0),@GP3 DEC(2,0),@GP2 DEC(2,0),@GP1 DEC(2,0);
SET @GP4=(SELECT SUM(4*CREDIT)/SUM(CREDIT) FROM Courses WHERE Courses.CNO IN (SELECT SC.CNO FROM SC WHERE SC.SNO=@SNO AND SC.GRADE>=85));
SET @GP3=(SELECT SUM(3*CREDIT)/SUM(CREDIT) FROM Courses WHERE Courses.CNO IN (SELECT SC.CNO FROM SC WHERE SC.SNO=@SNO AND SC.GRADE>=75 AND SC.GRADE<85));
SET @GP2=(SELECT SUM(2*CREDIT)/SUM(CREDIT) FROM Courses WHERE Courses.CNO IN (SELECT SC.CNO FROM SC WHERE SC.SNO=@SNO AND SC.GRADE>=60 AND SC.GRADE<75));
SET @GP1=(SELECT SUM(CREDIT)/SUM(CREDIT) FROM Courses WHERE Courses.CNO IN (SELECT SC.CNO FROM SC WHERE SC.SNO=@SNO AND SC.GRADE<60));
SET @GPA=(@GP4)+(@GP3)+(@GP2)+(@GP1);
IF @@rowcount=0
BEGIN
raiserror('error',16,1)
rollback transaction
END
END
GO


调用语句如下:
declare @GPA DEC(4,1)
execute CAL_GPA '0309203',@GPA OUTPUT
print @GPA



但是最后并没有输出GPA,请教错在哪
搜索更多相关主题的帖子: 编写 
2006-04-08 09:44
cfg1014
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-1-7
收藏
得分:0 
declare @GP DEC(2,0)
execute CAL_GPA @SNO='0309203',@GPA=@GP OUTPUT
print @GP

2006-04-08 10:31
duck3503
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-3-26
收藏
得分:0 
也是没有输出啊
怎么办啊?

2006-04-08 10:38
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
SP改成
CREATE PROCEDURE CAL_GPA
@SNO CHAR(7)
AS
BEGIN
declare @GP4 DEC(2,0),@GP3 DEC(2,0),@GP2 DEC(2,0),@GP1 DEC(2,0);
SET @GP4=(SELECT SUM(4*CREDIT)/SUM(CREDIT) FROM Courses WHERE Courses.CNO IN (SELECT SC.CNO FROM SC WHERE SC.SNO=@SNO AND SC.GRADE>=85));
SET @GP3=(SELECT SUM(3*CREDIT)/SUM(CREDIT) FROM Courses WHERE Courses.CNO IN (SELECT SC.CNO FROM SC WHERE SC.SNO=@SNO AND SC.GRADE>=75 AND SC.GRADE<85));
SET @GP2=(SELECT SUM(2*CREDIT)/SUM(CREDIT) FROM Courses WHERE Courses.CNO IN (SELECT SC.CNO FROM SC WHERE SC.SNO=@SNO AND SC.GRADE>=60 AND SC.GRADE<75));
SET @GP1=(SELECT SUM(CREDIT)/SUM(CREDIT) FROM Courses WHERE Courses.CNO IN (SELECT SC.CNO FROM SC WHERE SC.SNO=@SNO AND SC.GRADE<60));
SELECT (@GP4)+(@GP3)+(@GP2)+(@GP1) AS N'GPA';
IF @@rowcount=0
BEGIN
raiserror('error',16,1)
rollback transaction
END
END
GO


用execute CAL_GPA '0309203'调结果试试

[此贴子已经被作者于2006-4-8 11:02:50编辑过]


2006-04-08 11:01
duck3503
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-3-26
收藏
得分:0 
这样调以后显示一个表格,然后GPA为NULL,还是不对啊

2006-04-08 14:56
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
为Null?

'0309203'这个值没有问题吧。

[此贴子已经被作者于2006-4-8 20:19:25编辑过]


2006-04-08 20:15
duck3503
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-3-26
收藏
得分:0 
这个值没问题,数据库中有3条这个学号的成绩记录的

2006-04-08 21:24
duck3503
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-3-26
收藏
得分:0 
好象我写的存储过程的语法是没问题的吧?
@GPA=(@GP1)+(@GP2)+.....这样加是可以的吧?

2006-04-08 21:28
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
你中间插几个debug点执行一下,看哪个值出了问题

2006-04-08 21:47
duck3503
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-3-26
收藏
得分:0 

怎么插?这些语法不会哦


2006-04-08 22:00
快速回复:[求助]关于存储过程的编写出现的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026303 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved