存储过程
存储过程(Stored (Procedure 这是语法的关键字)) 是一组为了完成特定功能的SQL, 语句集,经编译后存储在数据库,
用户通过制定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程的分类:
1)系统提供的存储过程,一般它是以sp开头的
2)自定义的存储过程,一般与我们的业务相关的。
自定义的存储过程有可以分为有参数和无参数的存储过程。
创建一个存储过程,用来返回所有用户的信息。
select *from sysobjects where name = 'p_getinfo'
And type = 'p'
go 查询存储过程是否存在的语法
if exists (select 1 from sysobjects
where name ='p_getinfo'
and type='p') 存储过程存在后面使用的语句(关键字 exists)
drop proc p_getinfo
go 删除存储过程的语法
语法: create proc 存储过程名称 或 create procedure 存储过程名字 (systemproc系统的存储过程名字)
(p_getinfo 自定义的语法名字一般用P开头)
create procedure p_getinfo --无参的存储过程
as
begin (用着区分语句的区别 用 begin end)
select * from tb_user
end
go
--语句调用存储过程的语法
exec p_getinfo
go
完成一个存储过程,该存储过程实现的业务是用户登录,(用户输入的是用户名,和用户密码)
登录成功输出OK,登录失败输出false
if exists (select 1 from sysobjects
where name ='p_login'
and type ='p')
drop procedure p_login
go
create procedure p_login
(
@username varchar(20), --用户名
@userpwd varchar(20) --用户密码
@outresult varchar(20) out --这是传出来的参数语句
)
as
declare @rowcount int --定义一个变量
begin
select @rowcount = COUNT(*) from tb_user
where username=@username
and userpwd=@userpwd
if @rowcount >0
set @outresult ='ok'
else
set @outresult ='false'
end
go
--调用这个存储过程
declare @result varchar(20) -- 定义一个变量 关键字(declare)
exec p_login 'zs','123',@result output
print @result --页面输出打印
触发器
create proc p_dekleteTeacher
(
@teacherid char(3)
)
as
delete from course where 教师号 =@teacherid;
delete from teacher where 教师号 = @teacherid;
go
exec p_deleteTeacher '1001'
go
Select * From sysobjects Where name='tg_deleteStudent'
go
if exists(Select 1 From sysobjects
Where name='tg_deleteStudent'
And type='TR')
drop trigger tg_deleteStudent
go
触发器的语法
create trigger tg_deleteStudent
on teacher --on 表示该触发器作用于哪张表中或者哪个视图中。
for delete --for 表示该触发器的执行条件。 --for|after : 表示的是当执行完触发条件的语句成功的时候才会去执行这个触发器。
as 不能对视图进行after触发器。
declare @teacheid varchar(20)
select @teacheid = 教师号 from deleted
deleted表:把表删除的信息放入到deleted表中,只能用于触发器中
触发器调用:
不能显示调用,满足触发条件会自动去执行.
select * from tb_UserInfo inner join userrole on tb_UserInfo.roleid = userrole.roleid;
视图
视图是一张虚拟的表,
create view view_aaaa
as
select
tb_UserInfo.Id,tb_UserInfo.name,userrole.rolename --表名,列名
from tb_UserInfo inner join userrole on tb_UserInfo.roleid = userrole.roleid
go
select * from view_aaaa --查询视图表
select top 1 * from tb_UserInfo where Id not in (select top 4 Id from tb_UserInfo) --分页的语句
-- 1 表示查询需要显示的条数, 4 表示去除前多少条数据
存储过程 视图 触发器 分页
最新推荐文章于 2016-12-02 16:59:07 发布