| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 470 人关注过本帖
标题:下面的存储过程中有一句代码不理介,请教。
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:4 
下面的存储过程中有一句代码不理介,请教。
下面的存储过程中有一句代码不理介,请教。
从数据库表中取得一个记录或计算一个值时,需要使用返回输出参数的存储过程。为了举例,先在SQL Server的pubs库中新建一存储过程OUTemploy,该存储过程需要输入两个日期,然后输出一个最大值。
CREATE PROCEDURE OUTemploy
(
@job_lvl tinyint OUTPUT,
@hire_date1 datetime,
@hire_date2 datetime
)
AS
select @job_lvl = MAX(job_lvl) from employee
where hire_date >= @hire_date1 and hire_date <= @hire_date2  && 此句代码表示什么?最后显示结果是198,如何得来的?

Dim cmdTest, prmTest
Set cmdTest = Server.CreateObject(")
cmdTest.ActiveConnection = Cnn
= "OUTemploy"    '存储过程名
= adCmdStoredProc

'创建 Parameter 对象
Set prmTest = cmdTest.CreateParameter("job_lvl",adTinyInt,adParamOutput)
cmdTest.Parameters.Append prmTest
'adTinyInt - 1 字节带符号整型
'adDbDate - 日期值 (yyyymmdd)

Set prmTest = cmdTest.CreateParameter("hiredate1",adDBDate,adParamInput,,"1993-05-09")
cmdTest.Parameters.Append prmTest

Set prmTest = cmdTest.CreateParameter("hiredate2",adDBDate,adParamInput,,"1994-02-01")
cmdTest.Parameters.Append prmTest

cmdTest.Execute
Response.Write cmdtest("job_lvl") & "<br>"
Response.Write cmdTest.Parameters("job_lvl") & "<br>"
Response.Write cmdTest.Parameters("job_lvl").Value

Cnn.close
Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
搜索更多相关主题的帖子: 存储 计算 数据库表 最大值 如何 
2012-05-10 16:43
tangyunzhong
Rank: 5Rank: 5
来 自:广西
等 级:职业侠客
威 望:4
帖 子:97
专家分:364
注 册:2010-7-28
收藏
得分:0 
以下是引用sylknb在2012-5-10 16:43:29的发言:

下面的存储过程中有一句代码不理介,请教。
从数据库表中取得一个记录或计算一个值时,需要使用返回输出参数的存储过程。为了举例,先在SQL Server的pubs库中新建一存储过程OUTemploy,该存储过程需要输入两个日期,然后输出一个最大值。
CREATE PROCEDURE OUTemploy
(
@job_lvl tinyint OUTPUT,
@hire_date1 datetime,
@hire_date2 datetime
)
AS
select @job_lvl = MAX(job_lvl) from employee
where hire_date >= @hire_date1 and hire_date <= @hire_date2  && 此句代码表示什么?最后显示结果是198,如何得来的?

Dim cmdTest, prmTest
Set cmdTest = Server.CreateObject(")
cmdTest.ActiveConnection = Cnn
= "OUTemploy"    '存储过程名
= adCmdStoredProc

'创建 Parameter 对象
Set prmTest = cmdTest.CreateParameter("job_lvl",adTinyInt,adParamOutput)
cmdTest.Parameters.Append prmTest
'adTinyInt - 1 字节带符号整型
'adDbDate - 日期值 (yyyymmdd)

Set prmTest = cmdTest.CreateParameter("hiredate1",adDBDate,adParamInput,,"1993-05-09")
cmdTest.Parameters.Append prmTest

Set prmTest = cmdTest.CreateParameter("hiredate2",adDBDate,adParamInput,,"1994-02-01")
cmdTest.Parameters.Append prmTest

cmdTest.Execute
Response.Write cmdtest("job_lvl") & "
"
Response.Write cmdTest.Parameters("job_lvl") & "
"
Response.Write cmdTest.Parameters("job_lvl").Value

Cnn.close
Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
select @job_lvl = MAX(job_lvl) from employee
where hire_date >= @hire_date1 and hire_date <= @hire_date2  

这个是普通的查询语句啊!@hire_date1和@hire_date2  是执行存储过程时赋值的
2012-05-10 19:37
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
它的计算姑果是多少?
2012-05-11 08:47
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:20 
我来说一说。
学习研究SQL,最好在SQL Server 的“查询分析器”中。

问题:
select @job_lvl = MAX(job_lvl) from employee
where hire_date >= @hire_date1 and hire_date <= @hire_date2  && 此句代码表示什么?最后显示结果是198,如何得来的?

要看这个代码,先在SQL Server 的“查询分析器”中,执行:
use pubs
select * from employee where hire_date >= '1993-05-09' and hire_date <= '1994-02-01'
执行的结果为:
程序代码:
emp_id     fname   minit  lname     job_id  job_lvl   pub_id   hire_date
PXH22250M    Paul      X        Henriot    5        159        0877      1993-08-19 00:00:00.000
PDI47470M    Palle     D        Ibsen      7        195        0736      1993-05-09 00:00:00.000
POK93028M    Pirkko    O        Koskitalo  10        80        9999      1993-11-29 00:00:00.000
RBM23061F    Rita      B        Muller     5        198        1622      1993-10-09 00:00:00.000
PSP68661F    Paula     S        Parente    8        125        1389      1994-01-19 00:00:00.000
MMS49649F    Mary      M        Saveley    8        175        0736      1993-06-29 00:00:00.000
筛选出hire_date值在'1993-05-09' 和 '1994-02-01'之间的记录,共有6条。

MAX(job_lvl),MAX()是一个求最大值的函数,从筛选出的记录中,job_lvl字段的值共有6个值,最大的就是198了!

希望能帮你理解!

另外,在asp等网页中调用带参数的存储过程,也不用你例子中的那么麻烦。有简单的方法,你可以在网上查找一下。


做自己喜欢的事!
2012-05-15 23:31
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
netlin

多谢了,讲的如此详细。
2012-05-17 12:24
快速回复:下面的存储过程中有一句代码不理介,请教。
数据加载中...
 
   



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

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