国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
SQL存儲過程學(xué)習(xí)2-華軍資訊


2008-04-16 15:14:09 來源:blog 作者:未知 本文從SQL存儲過程的概念,優(yōu)點(diǎn),語法,創(chuàng)建技巧,調(diào)用等多方面介紹了SQL存儲過程。



  以下為引用的內(nèi)容:

  Product

  產(chǎn)品編號 產(chǎn)品名稱 客戶訂數(shù)

  001    鋼筆   30

  002    毛筆    50

  003          鉛筆    100

  order

  產(chǎn)品編號 客戶名 客戶訂金

  001   南山區(qū)  $30

  002   羅湖區(qū)  $50

  003   寶安區(qū)  $4

  請實(shí)現(xiàn)按編號為連接條件,將兩個表連接成一個臨時表,該表只含編號.產(chǎn)品名.客戶名.訂金.總金額,

  總金額=訂金*訂數(shù),臨時表放在存儲過程中
  代碼如下:

 

  Create proc temp_sale
  as
  select a.產(chǎn)品編號,a.產(chǎn)品名稱,b.客戶名,b.客戶訂金,a.客戶訂數(shù)* b.客戶訂金 as總金額
  into #temptable from Product a inner join order b on a.產(chǎn)品編號=b.產(chǎn)品編號
  if @@error=0
  print 'Good'
  else
  print 'Fail'
  go

 

  三、SQL存儲過程學(xué)習(xí):存儲過程的調(diào)用

  調(diào)用帶參數(shù)存儲過程的幾種方式

  1) 這也是最簡單的方法,兩個輸入?yún)?shù),無返回值,用于Insert,Update,Delete操作較多。

  以下為引用的內(nèi)容:

  conn.Execute "procname varvalue1,varvalue2"

  2) 如果要返回 Recordset 集:

  以下為引用的內(nèi)容:

  set rs = server.createobject("adodb.recordset")

  rs.Open "Exec procname varvalue1, varvalue2",conn

  3) 以上兩種方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。

  首先說明,返回值有兩種。一種是在存儲過程中直接return一個值,就象C和VB的函數(shù)返回值那樣;另一種是可以返回多個值,存儲這些值的變量名稱需要在調(diào)用參數(shù)中先行指定。

  四、特殊的存儲過程-觸發(fā)器

  1.觸發(fā)器的概念及作用

  觸發(fā)器是一種特殊類型的存儲過程,它不同于我們前面介紹過的存儲過程。觸發(fā)器主要是通過事件進(jìn)行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名字而被直接調(diào)用。當(dāng)對某一表進(jìn)行諸如Update、 Insert、 Delete 這些操作時,SQL Server 就會自動執(zhí)行觸發(fā)器所定義的SQL 語句,從而確保對數(shù)據(jù)的處理必須符合由這些SQL 語句所定義的規(guī)則。
  觸發(fā)器的主要作用就是其能夠?qū)崿F(xiàn)由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)的一致性。除此之外,觸發(fā)器還有其它許多不同的功能:

  (1) 強(qiáng)化約束(Enforce restriction)

  觸發(fā)器能夠?qū)崿F(xiàn)比CHECK 語句更為復(fù)雜的約束。

  (2) 跟蹤變化Auditing changes

  觸發(fā)器可以偵測數(shù)據(jù)庫內(nèi)的操作,從而不允許數(shù)據(jù)庫中未經(jīng)許可的指定更新和變化。

  (3) 級聯(lián)運(yùn)行(Cascaded operation)。

  觸發(fā)器可以偵測數(shù)據(jù)庫內(nèi)的操作,并自動地級聯(lián)影響整個數(shù)據(jù)庫的各項內(nèi)容。例如,某個表上的觸發(fā)器中包含有對另外一個表的數(shù)據(jù)操作(如刪除,更新,插入)而該操作又導(dǎo)致該表上觸發(fā)器被觸發(fā)。

  (4) 存儲過程的調(diào)用(Stored procedure invocation)。

  為了響應(yīng)數(shù)據(jù)庫更新觸,發(fā)器可以調(diào)用一個或多個存儲過程,甚至可以通過外部過程的調(diào)用而在DBMS( 數(shù)據(jù)庫管理系統(tǒng))本身之外進(jìn)行操作。

  由此可見,觸發(fā)器可以解決高級形式的業(yè)務(wù)規(guī)則或復(fù)雜行為限制以及實(shí)現(xiàn)定制記錄等一些方面的問題。例如,觸發(fā)器能夠找出某一表在數(shù)據(jù)修改前后狀態(tài)發(fā)生的差異,并根據(jù)這種差異執(zhí)行一定的處理。此外一個表的同一類型(Insert、 Update、 Delete)的多個觸發(fā)器能夠?qū)ν环N數(shù)據(jù)操作采取多種不同的處理。

  總體而言,觸發(fā)器性能通常比較低。當(dāng)運(yùn)行觸發(fā)器時,系統(tǒng)處理的大部分時間花費(fèi)在參照其它表的這一處理上,因?yàn)檫@些表既不在內(nèi)存中也不在數(shù)據(jù)庫設(shè)備上,而刪除表和插入表總是位于內(nèi)存中??梢娪|發(fā)器所參照的其它表的位置決定了操作要花費(fèi)的時間長短。

  2.觸發(fā)器的種類

  SQL Server 2000 支持兩種類型的觸發(fā)器:AFTER 觸發(fā)器和INSTEAD OF 觸發(fā)器。其中AFTER 觸發(fā)器即為SQL Server 2000 版本以前所介紹的觸發(fā)器。該類型觸發(fā)器要求只有執(zhí)行某一操作(Insert Update Delete) 之后,觸發(fā)器才被觸發(fā),且只能在表上定義。可以為針對表的同一操作定義多個觸發(fā)器。對于AFTER 觸發(fā)器,可以定義哪一個觸發(fā)器被最先觸發(fā),哪一個被最后觸發(fā),通常使用系統(tǒng)過程sp_settriggerorder 來完成此任務(wù)。

  INSTEAD OF 觸發(fā)器表示并不執(zhí)行其所定義的操作(Insert、 Update、 Delete),而僅是執(zhí)行觸發(fā)器本身。既可在表上定義INSTEAD OF 觸發(fā)器,也可以在視圖上定義INSTEAD OF 觸發(fā)器,但對同一操作只能定義一個INSTEAD OF 觸發(fā)器。


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
觸發(fā)器基本知識
sql的存儲過程與觸發(fā)器的區(qū)別,以及各自的優(yōu)缺點(diǎn)!
SQL中的觸發(fā)器–它會觸發(fā)什么?
存儲過程的教程--席子哥哥的小窩
IT公司面試手冊 - SQL Server面試題 – SQL SERVER面試資料
數(shù)據(jù)庫中存儲過程、函數(shù)、觸發(fā)器
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服