存儲過程 視圖 觸發器 分頁

存儲過程
存儲過程(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 表示去除前多少條數據

發佈了25 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章