T-SQL存储过程 - Angel's Blog.

ing
 
 
软件开发,程序设计,前端设计
 
 
首页 > code > T-SQL存储过程

T-SQL存储过程

 
存储过程:
存储过程是一组编译的SQL语句,它包含了以下:
1)数据操作语句
2)逻辑语句
3)调用函数
存储过程可以分为两种:
1)系统存储过程
2)用户自定义存储过程
②常用系统存储过程
常用的系统存储过程的名称都是 ‘sp’ 开头,且存放于 ‘master’ 数据库中,系统管理员有权限访问且使用。
系统存储过程,可以在任何的数据库中使用,执行的结果只反应当前的数据库。
例如,使用系统存储过程的扩展存储过程来创建文件夹,请看 demo1 的代码片段:
demo1:
exec xp_cmdShell msDos命令 [no_output]
这里的 ‘exec’ 表示的是存储过程
no_output 为返回值,可选的参数。
③用户定义的存储过程
用户可以创建自己所需要的存储过程,在这里,使用 ‘create proc’ 语句创建到当前的数据库中,请看 demo2 的代码片段:
demo2:
create proc 存储过程
 参数1 数据类型 =默认值1 [output],
 参数2 数据类型 =默认值2 [output]
 
as
 SQL语句
exec 存储过程名 [output]
1)如果不带参,则省略 [output]处的内容。
2)如果参数后面有 output ,表示输出参数,否则就是普通的输入参数,也可以输入默认值。
创建存储过程两种参数:
1)输入参数:调用时向存储过程传参。
2)输出参数:需要返回值,可以使用输出参数 output ,执行存储后,将返回值放到输出参数里,用来其他的sql语句访问使用。
创建输入参数的存储过程,请看 demo3 片段:
demo3:
use stuDB
go
if exists (select * from sysObjects where name = ‘proc_stu’)
drop proc proc_stu
go
create proc proc_stu
/*内容1 开始*/
@writtenPass int= 60,@labPass int= 60[email protected] @labPass默认值
as
print ‘笔试成绩及格线:’+convert (varchar(5),@writtenPass)
+’机试成绩及格线:’+convert (varchar(5),@labPass)
print ‘ ‘
print ‘参加本次考试没有通过的学员:’
select stuName,stuInfo.stuNo,writtenExam,labExam
from stuInfo
inner join stuMarks
on stuInfo.stuNo = stuMarks.stuNo
where writtenExam < @writtenPass or labExam < @labPass
go
/*内容1 结束*/
/*——————华丽的分割——————*/
exec proc_stu –writtenPass和labPass都为默认值。
exec proc_stu 68 [email protected],@labPass为默认值。
exec proc_stu 60,58 [email protected],@labPass为58(@writtenPass和labPass都不使用默认值)。
exec proc_stu @labPass = 58 –@writtenPass为默认值,@labPass为58。
创建输出参数的存储过程,请看 demo4 的代码片段:
demo4:
use stuDB
go
if exists (select * from sysObjects where name = ‘proc_stu’)
drop proc proc_stu
go
create proc proc_stu
@notPassSum int output,
–(此处省略代码,请参考demo3中的 内容1 处的代码)
select @notPassSum = count(stuNo) from stuMarks 
where writtenExam < @writtenPass or labExam < @labPass –统计 @notPassSum 的个数。
go
declare @sum int –定义变量 @sum ,用来存放调用存储过程时的返回结果。
exec proc_stu @sum output ,60
print ‘—————————–‘
if (@sum >= 3)
begin
print ‘没有通过的人数:’+convert(varchar(5),@sum)+’人,超过60%,及格分数还应下调’
end
else
begin
print ‘没有通过的人数:’+convert(varchar(5),@sum)+’人,已经控制在60%以下,及格分数适中’
end
go
存储过程中,处理错误信息,请看 demo5 :
demo5:
raiserror ({mgs_id | mgs_str}{, severity ,state} [with option[,…n]])
其中:
msg_id:sysmessages 系统表里,指定用户定义错误信息。
msg_str:用户定义的特定信息 maxlength 为255字符。
severity:用户定义的严重级别(0到25)。
state:错误的 state 。
option:是否将错误记录到服务 error log 中。。
或者通过RSS 关注本站的更新 ^ O ^ 。” —  by  转载请注明:来自 Angel's Blog.
本文永久链接: http://www.0ee.com/2010/09/04/t_sql_stored_procedure.html
 
分类: code标签:
 
  • QQ书签
  • Del.icio.us
  • 百度收藏
  • Google
  • 饭否
  • FriendFeed
 

 
评论 (0) Trackbacks (0)
发表评论 Trackback
 
No Comment Contributed by Visitors
(Got a sofa?)
  1. 本文目前尚无任何评论.
Leave Comments Here...

:) :-D :( :-o 8-O :-? 8) lol :-x :-P oops cry evil twisted wink ? idea :-| arrow mrgreen roll !

(required)

(required)

网址随您("http://"可以省略)

(Ctrl+Enter)

  • 本站不会泄露您的 Email 地址, 敬请放心.
  • 本站已开启缓存, 请不要重复提交评论.
  • 请注意: 带有 《广告(链)、不健康、或者 产品名字》 的评论一律视为spam.
  • 支持常用 HTML 标签调用, 插入 HTML 标签需注意: < == &lt;> == &gt;.
  • 仅当某人针对您的评论做出回应时, 您才会收到由本站发出的邮件通知.
  • 如您希望以相同方式通知某位网友, 请点击  按钮进行回复.
  • 允许在评论中使用如下代码: 
    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> 
    <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> 
    .
  • 鼠标悬浮到评论中的 @someone 区域即可自动显示 someone 的评论内容.
 
 
  • 正在加载...