求助 有关存储过程的一个问题 !!!!!!
小弟今天做练习 如下 结果无论getsss后面跟哪三个数字 都会得到正确结果
(结果已验证正确无误) 请大虾们指教 谢谢
use northwind go
create proc getsss @pin int output,@sum money output,@avg money output
as select @pin=count(*) from products select @sum=sum(unitprice) from products
select @avg=avg(unitprice) from products
print 'over'
--select count(*) from products
print 'count is:'+convert(varchar(20),@pin)
print 'total price is:'+convert(varchar(20),@sum)
print 'avg price is:'+convert(varchar(20),@avg)
getsss 2,55,2
结果: over
count is:77
total price is:2222.71
avg price is:28.87
问题点数:0、回复次数:10Top
1 楼CrazyFor(冬眠的鼹鼠)回复于 2003-08-02 16:39:46 得分 0
没错啊,结果就是这样的,
你有什么问题?什么地方不明白?
Top
2 楼sdhdy(大江东去...)回复于 2003-08-02 16:41:19 得分 0
@pin ,@sum,@avg
都是返回值
和你输入的三个值没关系Top
3 楼sdhdy(大江东去...)回复于 2003-08-02 16:42:55 得分 0
@pin ,@sum,@avg 的3个值又被重新赋值了Top
4 楼iamsea11()回复于 2003-08-02 16:43:49 得分 0
output 参数处能够输入?Top
5 楼CrazyFor(冬眠的鼹鼠)回复于 2003-08-02 16:54:59 得分 0
iamsea11(),是能句输入,可是你并没有利用你的输入值啊,
你可以这样试试:
use northwind go
create proc getsss @pin int output,@sum money output,@avg money output
as
print 'Start'
print 'count is:'+convert(varchar(20),@pin)
print 'total price is:'+convert(varchar(20),@sum)
print 'avg price is:'+convert(varchar(20),@avg)
select @pin=count(*) from products select @sum=sum(unitprice) from products
select @avg=avg(unitprice) from products
print 'over'
--select count(*) from products
print 'count is:'+convert(varchar(20),@pin)
print 'total price is:'+convert(varchar(20),@sum)
print 'avg price is:'+convert(varchar(20),@avg)
----
getsss 2,55,2
这样就可以看到你的输入值了.
Top
6 楼nboys()回复于 2003-08-02 16:55:14 得分 0
因为这三个变量都是output类型的
@pin int output,@sum money output,@avg money output
而且这三个变量都是存储过程内部算好的
所以不管你输入什么数据,这三个结果都不会表
除非你往products表中操作数据Top
7 楼nboys()回复于 2003-08-02 16:58:55 得分 0
可以试一试这个
create proc getsss
@pin int output,@sum money output,@avg money output
as
print 'over'
--select count(*) from products
print 'count is:'+convert(varchar(20),@pin)
print 'total price is:'+convert(varchar(20),@sum)
print 'avg price is:'+convert(varchar(20),@avg)
getsss 2,55,2
结果: over
count is:2
total price is:55
avg price is:2Top
8 楼nboys()回复于 2003-08-02 17:02:06 得分 0
如果改成这样,结果就不同了
create proc getsss
@pin int output,@sum money output,@avg money output
as
print 'over'
print 'count is:'+convert(varchar(20),@pin)
print 'total price is:'+convert(varchar(20),@sum)
print 'avg price is:'+convert(varchar(20),@avg)
getsss 2,55,2
结果: over
count is:2
total price is:55
avg price is:2Top
9 楼iamsea11()回复于 2003-08-02 18:54:22 得分 0
多谢 : CrazyFor(太阳下山明朝依旧爬上来
变量为 output 也 可以 作为输入参数Top
10 楼zjcxc(邹建)回复于 2003-08-02 20:54:19 得分 0
pin ,@sum,@avg
都是返回值
而且这三个值都在你的存储过程中被重新赋值
而你的存储过程中又没有地方在赋值之前引用了它.
所有你的结果是正常的.
Top
11 楼jinguang81(光当)回复于 2003-08-03 09:23:12 得分 0
谢谢大家 我知晓了 呵呵~Top




