存儲過程
存儲過程(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 表示去除前多少條數據
存儲過程 視圖 觸發器 分頁
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.