其实很容易的SQL SERVER存储过程和触发器(10分钟入门教程)
2008-12-13 21:14
411 查看
(我说是是10分钟入门,事实上对我来说,真的就是老师讲的那十分钟,并没有过分夸张,然后我就知道了存储过程和触发器应该怎么写了,当然只是入门而已,但我恬恬缺这十分钟,如果没有人讲,只是自己看书的话,至少要好几天的时间了....)
一直以来,对SQL SERVER的存储过程和触发器都基本没有用到,只是偶尔从网上找几个简单的函数PASTE到我的SQL中用。自己写总是感觉缺点什么,前几天单位的培训讲了一天的SQL SERVER,看了老师写的存储过程,才发现原来存储过程也不是很难。
事实上,也是我一直没有坚持研究的原因,但是不能否认的是,有人讲和自己学,这其中的效率实在是无法相比。尤其是对于我们这种已经编过很多年的程序,但是却又静不下心来看书学习的人来说,很多东西其实就是需要有人在前面带那么一下,把那层纸捅破了,给大家一个概貌性的东西,余下的,就只是个时间和熟练性的问题了。
我认为的存储过程的纸就在这里:
1、变量的声明和使用
declare @var as varchar(50)
set var='abcd'
2、IF循环
if isnull(@prjid,0)=0
begin
print '没有找到prjid!!!'
return
end
else
begin
--必须在这里写一些代码,否则会报错。
end
3、游标的使用
declare curJD cursor for
select id,fzbh from _tzk
open curJD
fetch next from curJD into @jdID,@paperno
while @@FETCH_STATUS=0
BEGIN
--这里是一些处理代码
fetch next from curJD into @jdID,@paperno
END
close curJD
deallocate curJD
4、触发器的使用
关键在于inserted表和deleted表的使用
ALTER TRIGGER RoleInsert ON [dbo].[roleName]
AFTER INSERT
AS
declare @RoleID as bigint
set @RoleID=(select roleid from inserted)
insert into rolerule (roleid,menuid,pw)
select @roleid,menuid,0 from menus where menus.menuid not in
(select menuid from rolerule where roleid=@roleid)
update rolerule set pw=1 where menuid in (select menuid from menus where always=1)
and roleid in (select roleid from inserted)
然后有了这几个例子,其它的就是熟练的一个过程了
一直以来,对SQL SERVER的存储过程和触发器都基本没有用到,只是偶尔从网上找几个简单的函数PASTE到我的SQL中用。自己写总是感觉缺点什么,前几天单位的培训讲了一天的SQL SERVER,看了老师写的存储过程,才发现原来存储过程也不是很难。
事实上,也是我一直没有坚持研究的原因,但是不能否认的是,有人讲和自己学,这其中的效率实在是无法相比。尤其是对于我们这种已经编过很多年的程序,但是却又静不下心来看书学习的人来说,很多东西其实就是需要有人在前面带那么一下,把那层纸捅破了,给大家一个概貌性的东西,余下的,就只是个时间和熟练性的问题了。
我认为的存储过程的纸就在这里:
1、变量的声明和使用
declare @var as varchar(50)
set var='abcd'
2、IF循环
if isnull(@prjid,0)=0
begin
print '没有找到prjid!!!'
return
end
else
begin
--必须在这里写一些代码,否则会报错。
end
3、游标的使用
declare curJD cursor for
select id,fzbh from _tzk
open curJD
fetch next from curJD into @jdID,@paperno
while @@FETCH_STATUS=0
BEGIN
--这里是一些处理代码
fetch next from curJD into @jdID,@paperno
END
close curJD
deallocate curJD
4、触发器的使用
关键在于inserted表和deleted表的使用
ALTER TRIGGER RoleInsert ON [dbo].[roleName]
AFTER INSERT
AS
declare @RoleID as bigint
set @RoleID=(select roleid from inserted)
insert into rolerule (roleid,menuid,pw)
select @roleid,menuid,0 from menus where menus.menuid not in
(select menuid from rolerule where roleid=@roleid)
update rolerule set pw=1 where menuid in (select menuid from menus where always=1)
and roleid in (select roleid from inserted)
然后有了这几个例子,其它的就是熟练的一个过程了
相关文章推荐
- 教程 | 10分钟入门数位板绘图,一张图足以说明方法!
- 发布NBearLite中文版完全参考手册 + NBearLite 10分钟入门教程 + NBearLite v1.0.0.7 beta
- 10分钟 MySQL 入门教程
- 微信小程序教程入门篇 (1):10分钟从0开始写一个hello world,极其详细
- 10分钟MySQL 入门教程
- \t\tNBearLite 数据持久层 10分钟入门教程
- Maven 10分钟入门教程
- 教程 | 10分钟入门简笔画 11(简笔小插画入门)
- 教程 | 10分钟入门禅绕画 3
- 发布NBearLite中文版完全参考手册 + NBearLite 10分钟入门教程 + NBearLite v1.0.0.7 beta
- (转)Java任务调度框架Quartz入门教程指南(四)Quartz任务调度框架之触发器精讲SimpleTrigger和CronTrigger、最详细的Cron表达式范例
- 教程 | 10分钟掌握手帐入门技能
- 发布NBearLite中文版完全参考手册 + NBearLite 10分钟入门教程 + NBearLite v1.0.0.7 beta
- pandas入门10分钟——serries其实就是data frame的一列数据
- R语言开发环境搭建图文教程(含教程和全部软件)10分钟入门
- 10分钟交互式入门Lua教程
- Go 语言基础教程:10分钟入门
- NDK 10分钟入门教程
- 正则表达式10分钟入门教程
- Java剖析工具JProfiler入门使用教程:离线剖析和触发器