亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 實例14(存儲過程).sql

?? 經典的sql資料
?? SQL
字號:

--上課內容:第七章 存儲過程及觸發器


-- 7.1 存儲過程的創建和使用

  -- 7.1.1 存儲過程的概念

    -- 存儲過程是一種數據庫對象

    -- 存儲過程創建時就被編譯和優化,調用一次以后,就保存在內存,下次調用直接執行,執行起來比單個語句快

    -- 可以將某個特定任務的代碼段寫在存儲過程里,通過用戶定義的存儲過程名進行多次調用。

   -- 特點:

    -- 1. 可以在一個存儲過程里執行一系列 SQL 語句

    -- 2. 存儲過程之間可以相互調用

    -- 3. 存儲過程可以接受輸入參數并以輸出參數的形式將多個值返回至調用過程或批處理

    -- 4. 存儲過程向調用過程或批處理返回狀態值,以表明成功或失敗(以及失敗原因)


   -- 功能:

    -- 1. 通過存儲過程的使用,可以簡化復雜 SQL 語句

    -- 2. 存儲過程可以被多個用戶共享和重用

    -- 3. 可以加快程序的運行速度

    -- 4. 可以提高數據庫的安全性


   -- 創建存儲過程的原則:

    -- 1. 只能在當前數據庫中創建存儲過程。

    -- 2. 數據庫的所有者可以創建存儲過程,也可以授權其他用戶創建存儲過程。

    -- 3. 存儲過程是數據庫對象,其名稱必須遵守標識符命名規則。

    -- 4. 存儲過程可以根據表、視圖來創建

    -- 5. 不能將 CREATE  PROCEDURE 語句與其它 SQL 語句組合到單個批處理中。

    -- 6. 創建存儲過程時,應指定所有輸入參數和向調用過程或批處理返回的輸出參數、執行數據庫操作的編程語句和返回至調用過程或批處理以表明成功或失敗的狀態值


   -- 分類:

    -- 1. 系統存儲過程:系統自動創建的,存儲在master數據庫里

    -- 2. 用戶自定義的存儲過程

    -- 3. 臨時存儲過程:

 
  -- 7.1.2 存儲過程的分類和創建方法

    -- 語法:

     -- 簡單存儲過程:

        CREATE PROCEDURE 存儲過程名 AS 查詢語句

     -- 帶參數的存儲過程

        CREATE PROCEDURE 存儲過程名 [@局部變量名 數據類型]  AS 查詢語句(要使用局部變量)

     -- 帶返回值的存儲過程

        CREATE PROCEDURE 存儲過程名 [@局部變量名 數據類型] [OUTPUT] AS 查詢語句(要使用局部變量)


    -- 7.1.2.1 創建不帶參數的存儲過程

CREATE PROCEDURE stu_pro1 AS select * from exam

-- 執行該存儲過程

stu_pro1

execute stu_pro1

-- 修改存儲過程

ALTER PROCEDURE stu_pro1 AS select * from exam where t_number='20040301'

 


   -- 7.1.2.2 創建帶參數簡單的存儲過程

CREATE PROCEDURE stu_pro3 @tnum char(8) AS select * from exam where t_number=@tnum

-- 執行該存儲過程

stu_pro3 '20040302'

execute stu_pro3 '20040301'

execute stu_pro3 @tnum='20040301'


 -- 我們經常把需要復雜計算的工作交給計算機來做,但做法是要你預先寫好,編譯好的

    -- 7.1.2.3 創建帶參數的存儲過程,并根據執行結果返回不同的值

     -- OUTPUT 返回參數,將信息返回給調用過程

CREATE PROCEDURE stu_pro4 @tnum char(8),@cnum char(6),@grade char(10) output
 AS 
select  @grade=t_grade from exam where t_number=@tnum and c_number=@cnum

-- 執行
declare @tnum char(8),@cnum char(6),@grade char(10)
select @tnum=20040301,@cnum=100101
execute stu_pro4 @tnum,@cnum,@grade output
select @tnum as '學號',@cnum as '課程號', @grade as '成績'


-- 我們還可以返回一個存儲過程在執行過程中是否出錯的信息

-- 例:帶多個參數,有返回值,又可以返回程序執行成功與否的存儲過程

CREATE PROCEDURE stu_pro5 @tnum char(8),@cnum char(6),@grade char(10) output 
 AS 
declare @errorvalue int
set @errorvalue=0
select  @grade=t_grade from exam where t_number=@tnum and c_number=@cnum
if (@@ERROR<>0)
  set @errorvalue=@@ERROR
return @errorvalue

-- 執行

declare @returnvalue int,@tnum char(8),@cnum char(6),@grade char(10)
select @tnum=20040301,@cnum=100101
execute @returnvalue=stu_pro5 @tnum,@cnum,@grade output
select @returnvalue as '返回是否出錯'
select @grade as '學號為20040301,課程號為100101的成績'

  -- 7.1.3 查看stu_pro3信息sp_help stu_pro3

  -- 查看存儲過程信息
sp_help  stu_pro1

  -- 查看stu_pro1定義文本

sp_helptext stu_pro1

  -- WITH ENCRYPTION 參數

CREATE PROCEDURE stu_pro1 AS select * from exam

ALTER PROCEDURE stu_pro1 WITH ENCRYPTION AS select * from exam 

  -- 注意:WITH ENCRYPTION 和視圖的一樣,在修改時沒寫就是默認可以讓他人看到你存儲過程的定義


  -- 查看存儲過程目錄信息
sp_stored_procedures stu_pro3

  -- 查看存儲過程相關性
sp_depends stu_pro3


  -- 7.1.4 重命名存儲過程
sp_rename 舊存儲過程名,新存儲過程名 
sp_rename stu_pro1,stu_pro

  -- 7.1.5 刪除存儲過程
Drop procedure stu_pro


-- 準備工作:

create table exam
(
t_number char(8),
c_number char(6),
t_grade decimal(5,2)
)

insert into exam values('20040301','100101',79)
insert into exam values('20040301','100102',88)
insert into exam values('20040302','100101',90)
insert into exam values('20040302','100103',75)
insert into exam values('20040303','100101',79)
insert into exam values('20040303','100102',75)
insert into exam values('20040303','100103',95)
insert into exam values('20040304','100102',43)
insert into exam values('20040304','100103',68)
insert into exam values('20040305','100101',64)
insert into exam values('20040305','100102',87)
insert into exam values('20040305','100103',92)


-- 練習:

-- 1. 創建存儲過程pro_exam,顯示exam表中的所有記錄


-- 2. 執行存儲過程pro_exam


-- 3. 查欄存儲過程pro_exam的定義文本


-- 4. 修改存儲過程pro_exam,加密定義文本,并驗證


-- 5. 查看存儲過程pro_exam的相關性信息


-- 6. 查看存儲過程pro_exam的目錄信息


-- 7. 重命名存儲過程pro_exam 為 pro_exam1,并查看


-- 8. 刪除存儲過程pro_exam1


-- 9. 創建一個帶有參數的存儲過程pro_exam2,該存儲過程根據傳入的學生編號、課程號顯示該學生的考試成績


-- 10. 執行存儲過程pro_exam2,查看學號為'20040301'課程號為'100101'的成績


-- 11. 使用pubs 數據庫authors表,創建一個帶有參數的存儲過程pro_au,該存儲過程傳入作者所在的州,顯示所有這個州的所有作者信息


-- 12. 執行存儲過程pro_au,查看所有state 為 'CA'州的所有作者信息


-- 13. 使用northwind 數據庫order details表,創建一個帶參數的存儲過程pro_sale
    -- 該存儲過程根據傳入的訂單號、產品號,計算銷售額(=unitprice*quantity*(1-diacount))
    -- 根據程序執行結果返回不同的值,程序成功返回0,程序失敗返回錯誤號

select * from [order details]


--  14. 執行存儲過程pro_sale,計算訂單號為10248產品號為11的銷售額







-- 練習參考答案:

-- 1. 創建存儲過程pro_exam,顯示exam表中的所有記錄
create procedure pro_exam as select * from exam

-- 2. 執行存儲過程pro_exam
pro_exam
-- 或
execute pro_exam

-- 3. 查欄存儲過程pro_exam的定義文本
sp_helptext pro_exam

-- 4. 修改存儲過程pro_exam,加密定義文本,并驗證
alter  procedure pro_exam  with encryption as select * from exam
sp_helptext pro_exam

-- 5. 查看存儲過程pro_exam的相關性信息
sp_depends pro_exam

-- 6. 查看存儲過程pro_exam的目錄信息
sp_stored_procedures pro_exam 

-- 7. 重命名存儲過程pro_exam 為 pro_exam1,并查看
sp_rename pro_exam,pro_exam1
sp_help pro_exam1

-- 8. 刪除存儲過程pro_exam1
drop procedure pro_exam1

-- 9. 創建一個帶有參數的存儲過程pro_exam2,該存儲過程根據傳入的學生編號、課程號顯示該學生的考試成績
create procedure pro_exam2 @tnum char(8),@cnum char(6) as select * from exam where t_number=@tnum and c_number=@cnum

-- 10. 執行存儲過程pro_exam2,查看學號為'20040301'課程號為'100101'的成績
pro_exam2 '20040301','100101'
--或
execute pro_exam2 '20040301','100101'
--或
execute pro_exam2 @tnum='20040301',@cnum='100101'

-- 11. 使用pubs 數據庫authors表,創建一個帶有參數的存儲過程pro_au,該存儲過程傳入作者所在的州,顯示所有這個州的所有作者信息
create procedure pro_au @state char(2) as select * from authors where state=@state 

-- 12. 執行存儲過程pro_au,查看所有state 為 'CA'州的所有作者信息
pro_au 'CA'
--或
execute pro_au 'CA'
--或
execute pro_au @tnum='CA'

-- 13. 使用northwind 數據庫order details表,創建一個帶參數的存儲過程pro_sale
    -- 該存儲過程根據傳入的訂單號、產品號,計算銷售額(=unitprice*quantity*(1-discount))
    -- 根據程序執行結果返回不同的值,程序成功返回0,程序失敗返回錯誤號

select * from [order details]

CREATE
alter PROCEDURE pro_sale @oid int,@pid int ,@sale decimal(10,2)output
 AS 
declare @errorvalue int
set @errorvalue=0
select @sale=unitprice*quantity*(1-discount) from [order details] where @oid=orderid and @pid=productid 
if (@@ERROR<>0)
  set @errorvalue=@@ERROR
return @errorvalue

--  14. 執行存儲過程pro_sale,計算訂單號為10248產品號為11的銷售額
declare @returnvalue int,@oid int,@pid int,@sale decimal(10,2)
select @oid=10248,@pid=11
execute @returnvalue=pro_sale @oid,@pid,@sale output
select @returnvalue as '返回是否出錯'
select @sale as '銷售額'

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情一二三区| 精品久久久久久亚洲综合网| 欧美精品丝袜久久久中文字幕| 91精品一区二区三区在线观看| 国产日韩av一区二区| 亚洲国产你懂的| 国产凹凸在线观看一区二区| 91精品国产免费| 最新国产の精品合集bt伙计| 国产在线日韩欧美| 欧美裸体一区二区三区| 17c精品麻豆一区二区免费| 麻豆免费看一区二区三区| 一区二区三区欧美日| 国产欧美一区二区精品忘忧草 | 调教+趴+乳夹+国产+精品| 风间由美一区二区三区在线观看| 欧美丝袜第三区| 亚洲欧洲日产国产综合网| 精彩视频一区二区| 宅男噜噜噜66一区二区66| 一区二区三区不卡视频| 91丨porny丨蝌蚪视频| 中文在线资源观看网站视频免费不卡| 美国毛片一区二区三区| 欧美精品自拍偷拍| 亚洲成精国产精品女| 91麻豆swag| 一区二区三区.www| 一本大道久久a久久精二百| 久久久噜噜噜久久人人看 | 亚洲综合色视频| 色偷偷久久一区二区三区| 久久成人av少妇免费| 欧美日韩精品一区二区在线播放| 亚洲美女一区二区三区| 91污在线观看| 亚洲免费在线播放| 欧洲人成人精品| 亚洲黄色小视频| 欧美图片一区二区三区| 亚洲成人av免费| 91精品国产综合久久福利| 免播放器亚洲一区| 2023国产精品| 成人黄色大片在线观看| 亚洲人妖av一区二区| av电影一区二区| 亚洲一二三区在线观看| 69久久99精品久久久久婷婷| 美国十次了思思久久精品导航| 欧美精品一区二区三| 成人午夜看片网址| 亚洲精品国产a久久久久久 | 一区二区三区精品在线观看| 日本黄色一区二区| 日韩精品91亚洲二区在线观看| 日韩一区二区三区在线观看| 伦理电影国产精品| 国产精品欧美经典| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲黄色片在线观看| 日韩丝袜情趣美女图片| 91在线视频在线| 亚洲在线免费播放| 欧美一区二区大片| 成人99免费视频| 亚洲成人第一页| 久久综合国产精品| 91一区一区三区| 免费在线观看不卡| 国产精品久久毛片| 欧美一区二区在线看| 成人免费的视频| 免费精品视频在线| 亚洲日本一区二区| 精品欧美一区二区久久| 色哟哟亚洲精品| 国产一区视频在线看| 亚洲一区二区美女| 中文字幕乱码一区二区免费| 欧美美女黄视频| 91女厕偷拍女厕偷拍高清| 毛片不卡一区二区| 亚洲国产一区视频| 欧美精彩视频一区二区三区| 欧美精品18+| 91在线观看高清| 国产一区二区不卡在线 | 日韩国产欧美视频| 国产精品家庭影院| 亚洲免费成人av| 5858s免费视频成人| av在线播放一区二区三区| 热久久久久久久| 一区二区在线观看视频| 久久精品夜夜夜夜久久| 欧美一区二区日韩| 在线看国产一区| 成人午夜精品一区二区三区| 韩日欧美一区二区三区| 日韩制服丝袜av| 亚洲乱码中文字幕| 国产精品久久久久久久久搜平片 | 国产成人在线看| 天堂蜜桃91精品| 亚洲图片一区二区| 一区二区三区在线高清| 亚洲欧洲成人自拍| 中文字幕欧美一区| 国产精品免费视频网站| 久久免费电影网| 欧美变态口味重另类| 日韩欧美色电影| 欧美成人国产一区二区| 欧美一级艳片视频免费观看| 欧美一级片在线| 欧美一卡2卡3卡4卡| 欧美一区二区三区在线看 | 91蜜桃免费观看视频| 成人av免费在线观看| 成人av免费在线播放| 成人午夜激情片| 91无套直看片红桃| 在线看一区二区| 欧美精品亚洲一区二区在线播放| 色88888久久久久久影院按摩 | 久草这里只有精品视频| 国产一区中文字幕| 国产激情视频一区二区在线观看| 韩国理伦片一区二区三区在线播放| 国产专区综合网| 成人亚洲精品久久久久软件| av在线播放成人| 欧美午夜寂寞影院| 日韩精品一区二区三区视频在线观看 | 国产麻豆一精品一av一免费 | 日本一区二区三区在线观看| 欧美三级欧美一级| 99视频一区二区| 色88888久久久久久影院按摩| 欧美日韩精品欧美日韩精品一 | 欧美一区二区女人| 久久一日本道色综合| 国产精品欧美一级免费| 亚洲一区二区三区三| 蜜臀av一区二区在线免费观看 | 欧美tk—视频vk| 亚洲国产精华液网站w| 亚洲免费资源在线播放| 亚洲一区二区在线免费看| 91久久奴性调教| 久久久国产精品不卡| 中文字幕免费一区| 亚洲午夜国产一区99re久久| 九色综合国产一区二区三区| 99久久精品国产麻豆演员表| 欧美高清精品3d| 亚洲国产高清不卡| 视频在线在亚洲| 成人app软件下载大全免费| 在线电影院国产精品| 国产精品丝袜久久久久久app| 一区二区三区欧美日| 精品综合免费视频观看| 日本精品免费观看高清观看| 久久蜜桃一区二区| 亚洲不卡av一区二区三区| 粉嫩一区二区三区在线看| 欧美日韩在线播放一区| 国产精品美日韩| 美女任你摸久久| 在线观看亚洲精品| 国产欧美精品一区二区三区四区| 五月天久久比比资源色| 91在线观看污| 国产欧美一区二区精品忘忧草| 日韩高清一级片| 色综合久久久网| 国产精品三级电影| 激情欧美一区二区| 欧美一区二区视频在线观看| 亚洲美女在线一区| www.性欧美| 国产欧美久久久精品影院| 蜜臂av日日欢夜夜爽一区| 欧美网站一区二区| 亚洲精品亚洲人成人网在线播放| 国产成人一级电影| 日韩欧美视频一区| 免费看黄色91| 91精品国产综合久久久久久久 | 豆国产96在线|亚洲| 日韩视频一区在线观看| 无码av中文一区二区三区桃花岛| gogogo免费视频观看亚洲一| 国产日韩欧美高清在线| 国产又黄又大久久| 国产亚洲人成网站| 国产91在线观看丝袜|