欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
MS SQLServer 存儲過(guò)程簡(jiǎn)介
sql語(yǔ)句執行的時(shí)候要先編譯,然后執行。存儲過(guò)程(Stored Procedure)是一組為了完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲在數據庫中。用戶(hù)通過(guò)指定存儲過(guò)程的名字并給出參數(如果該存儲過(guò)程帶有參數)來(lái)執行它。存儲過(guò)程是數據庫中的一個(gè)重要對象,任何一個(gè)設計良好的數據庫應用程序都應該用到存儲過(guò)程。
  一、存儲過(guò)程介紹
  存儲過(guò)程是由流控制和SQL語(yǔ)句書(shū)寫(xiě)的過(guò)程,這個(gè)過(guò)程經(jīng)編譯和優(yōu)化后存儲在數據庫服務(wù)器中,應用程序使用時(shí)只要調用即可。在ORACLE中,若干個(gè)有聯(lián)系的過(guò)程可以組合在一起構成程序包。
  存儲過(guò)程是利用SQL Server所提供的Tranact-SQL語(yǔ)言所編寫(xiě)的程序。Tranact-SQL語(yǔ)言是SQL Server提供專(zhuān)為設計數據庫應用程序的語(yǔ)言,它是應用程序和SQL Server數據庫間的主要程序式設計界面。它好比Oracle數據庫系統中的Pro-SQL和Informix的數據庫系統能夠中的Informix- 4GL語(yǔ)言一樣。這類(lèi)語(yǔ)言主要提供以下功能,讓用戶(hù)可以設計出符合引用需求的程序:
  1)、變量說(shuō)明
  2)、ANSI兼容的SQL命令(如Select,Update….)
  3)、一般流程控制命令(if…else…、while….)
  4)、內部函數
  二、使用存儲過(guò)程有以下的優(yōu)點(diǎn):
  * 存儲過(guò)程的能力大大增強了SQL語(yǔ)言的功能和靈活性。存儲過(guò)程可以用流控制語(yǔ)句編寫(xiě),有很強的靈活性,可以完成復雜的判斷和較復雜的 運算。
  * 可保證數據的安全性和完整性。
  # 通過(guò)存儲過(guò)程可以使沒(méi)有權限的用戶(hù)在控制之下間接地存取數據庫,從而保證數據的安全。
  # 通過(guò)存儲過(guò)程可以使相關(guān)的動(dòng)作在一起發(fā)生,從而可以維護數據庫的完整性。
  * 在運行存儲過(guò)程前,數據庫已對其進(jìn)行了語(yǔ)法和句法分析,并給出了優(yōu)化執行方案。這種已經(jīng)編譯好的過(guò)程可極大地改善SQL語(yǔ)句的性能。由于執行SQL語(yǔ)句的大部分工作已經(jīng)完成,所以存儲過(guò)程能以極快的速度執行。
  * 可以降低網(wǎng)絡(luò )的通信量。
  * 使體現企業(yè)規則的運算程序放入數據庫服務(wù)器中,以便:
  # 集中控制。
  # 當企業(yè)規則發(fā)生變化時(shí)在服務(wù)器中改變存儲過(guò)程即可,無(wú)須修改任何應用程序。企業(yè)規則的特點(diǎn)是要經(jīng)常變化,如果把體現企業(yè)規則的運算程序放入應用程序中,則當企業(yè)規則發(fā)生變化時(shí),就需要修改應用程序工作量非常之大(修改、發(fā)行和安裝應用程序)。如果把體現企業(yè)規則的運算放入存儲過(guò)程中,則當企業(yè)規則發(fā)生變化時(shí),只要修改存儲過(guò)程就可以了,應用程序無(wú)須任何變化。
  三、存儲過(guò)程的種類(lèi):
  1)、系統存儲過(guò)程:以sp_開(kāi)頭,用來(lái)進(jìn)行系統的各項設定.取得信息.相關(guān)管理工作,
  如 sp_help就是取得指定對象的相關(guān)信息
  2)、擴展存儲過(guò)程以XP_開(kāi)頭,用來(lái)調用操作系統提供的功能
  exec master..xp_cmdshell 'ping 10.8.16.1'
  3)、用戶(hù)自定義的存儲過(guò)程,這是我們所指的存儲過(guò)程
  四、存儲過(guò)程的書(shū)寫(xiě)格式:
  CREATE PROCEDURE [擁有者.]存儲過(guò)程名[;程序編號]
  [(參數#1,…參數#1024)]
  [WITH
  {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
  ]
  [FOR REPLICATION]
  AS 程序行
  其中存儲過(guò)程名不能超過(guò)128個(gè)字。每個(gè)存儲過(guò)程中最多設定1024個(gè)參數
  (SQL Server 7.0以上版本),參數的使用方法如下:
  @參數名 數據類(lèi)型 [VARYING] [=內定值] [OUTPUT]
  每個(gè)參數名前要有一個(gè)“@”符號,每一個(gè)存儲過(guò)程的參數僅為該程序內部使用,參數的類(lèi)型除了IMAGE外,其他SQL Server所支持的數據類(lèi)型都可使用。
  [=內定值]相當于我們在建立數據庫時(shí)設定一個(gè)字段的默認值,這里是為這個(gè)參數設定默認值。[OUTPUT]是用來(lái)指定該參數是既有輸入又有輸出值的,也就是在調用了這個(gè)存儲過(guò)程時(shí),如果所指定的參數值是我們需要輸入的參數,同時(shí)也需要在結果中輸出的,則該項必須為OUTPUT,而如果只是做輸出參數用,可以用CURSOR,同時(shí)在使用該參數時(shí),必須指定VARYING和OUTPUT這兩個(gè)語(yǔ)句。
  例子:
  CREATE PROCEDURE order_tot_amt @o_id int,@p_tot int output AS
  SELECT @p_tot = sum(Unitprice*Quantity)
  FROM orderdetails
  WHERE ordered=@o_id
  例子說(shuō)明:
  該例子是建立一個(gè)簡(jiǎn)單的存儲過(guò)程order_tot_amt,這個(gè)存儲過(guò)程根據用戶(hù)輸入的定單ID號碼(@o_id),由定單明細表 (orderdetails)中計算該定單銷(xiāo)售總額[單價(jià)(Unitprice)*數量(Quantity)],這一金額通過(guò)@p_tot這一參數輸出給調用這一存儲過(guò)程的程序。
  五、存儲過(guò)程的常用格式:
  Create procedure procedue_name
  [@parameter data_type][output]
  [with]{recompile|encryption}
  as
  sql_statement
  解釋?zhuān)?br>  output:表示此參數是可傳回的
  with {recompile|encryption}
  recompile:表示每次執行此存儲過(guò)程時(shí)都重新編譯一次
  encryption:所創(chuàng )建的存儲過(guò)程的內容會(huì )被加密
  如:
  表book的內容如下
  編號 書(shū)名 價(jià)格
  001 C語(yǔ)言入門(mén) $30
  002 PowerBuilder報表開(kāi)發(fā) $52
  實(shí)例1:查詢(xún)表Book的內容的存儲過(guò)程
  create proc query_book
  as
  select * from book
  go
  exec query_book
  實(shí)例2:
  加入一筆記錄到表book,并查詢(xún)此表中所有書(shū)籍的總金額
  Create proc insert_book
  @param1 char(10),@param2 varchar(20),@param3 money,@param4 money output
  with encryption ---------加密
  as
  insert book(編號,書(shū)名,價(jià)格) Values(@param1,@param2,@param3)
  select @param4=sum(價(jià)格) from book
  go
  執行例子:
  declare @total_price money
  exec insert_book '003','Delphi 控件開(kāi)發(fā)指南',$100,@total_price
  print '總金額為'+convert(varchar,@total_price)
  go
  存儲過(guò)程的3種傳回值:
  1)、以Return傳回整數
  2)、以output格式傳回參數
  3)、Recordset
  傳回值的區別:
  output和return都可在批次程式中用變量接收,而recordset則傳回到執行批次的客戶(hù)端中。
  實(shí)例3:
  設有兩個(gè)表為Product,Order,其表內容如下:
  Product
  產(chǎn)品編號 產(chǎn)品名稱(chēng) 客戶(hù)訂數
  001 鋼筆 30
  002 毛筆 50
  003 鉛筆 100
  Order
  產(chǎn)品編號 客戶(hù)名 客戶(hù)訂金
  001 南山區 $30
  002 羅湖區 $50
  003 寶安區 $4
  請實(shí)現按編號為連接條件,將兩個(gè)表連接成一個(gè)臨時(shí)表,該表只含編號.產(chǎn)品名.客戶(hù)名.訂金.總金額,
  總金額=訂金*訂數,臨時(shí)表放在存儲過(guò)程中
  代碼如下:
  Create proc temp_sale
  as
  select a.產(chǎn)品編號,a.產(chǎn)品名稱(chēng),b.客戶(hù)名,b.客戶(hù)訂金,a.客戶(hù)訂數* b.客戶(hù)訂金 as總金額
  into #temptable from Product a inner join Order b on a.產(chǎn)品編號=b.產(chǎn)品編號
  if @@error=0
  print 'Good'
  else
  &n bsp; print 'Fail'
  go
  六、編寫(xiě)對數據庫訪(fǎng)問(wèn)的存儲過(guò)程:
  數據庫存儲過(guò)程的實(shí)質(zhì)就是部署在數據庫端的一組定義代碼以及SQL。將常用的或很復雜的工作,預先用SQL語(yǔ)句寫(xiě)好并用一個(gè)指定的名稱(chēng)存儲起來(lái),那么以后要叫數據庫提供與已定義好的存儲過(guò)程的功能相同的服務(wù)時(shí),只需調用execute,即可自動(dòng)完成命令。
  利用SQL的語(yǔ)言可以編寫(xiě)對于數據庫訪(fǎng)問(wèn)的存儲過(guò)程,其語(yǔ)法如下:
  CREATE PROC[EDURE] procedure_name [;number]
  [
  {@parameter data_type} ][VARYING] [= default] [OUTPUT]
  ]
  [,...n]
  [WITH 
  {
  RECOMPILE 
  | ENCRYPTION 
  | RECOMPILE, ENCRYPTION
  }
  ]
  [FOR REPLICATION]
  AS
  sql_statement [...n]
  [ ]內的內容是可選項,而()內的內容是必選項,
  例:若用戶(hù)想建立一個(gè)刪除表tmp中的記錄的存儲過(guò)程Select_delete可寫(xiě)為:
  Create Proc select_del As 
  Delete tmp 
  例:用戶(hù)想查詢(xún)tmp表中某年的數據的存儲過(guò)程
  create proc select_query @year int as
  select * from tmp where year=@year
  在這里@year是存儲過(guò)程的參數
  例:該存儲過(guò)程是從某結點(diǎn)n開(kāi)始找到最上層的父親結點(diǎn),這種經(jīng)常用到的過(guò)程可以由存儲過(guò)程來(lái)?yè)?,在網(wǎng)頁(yè)中重復使用達到共享。
  空:表示該結點(diǎn)為頂層結點(diǎn)
  fjdid(父結點(diǎn)編號) 
  結點(diǎn)n 非空:表示該結點(diǎn)的父親結點(diǎn)號
  dwmc(單位名稱(chēng))
  CREATE proc search_dwmc @dwidold int,@dwmcresult varchar(100) output
  as 
  declare @stop int
  declare @result varchar(80)
  declare @dwmc varchar(80)
  declare @dwid int
  set nocount on
  set @stop=1
  set @dwmc=""
  select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold 
  set @result=rtrim(@dwmc)
  if @dwid=0 
  set @stop=0
  while (@stop=1) and (@dwid<>0)
  begin
  set @dwidold=@dwid
  select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold
  if @@rowcount=0 
  set @dwmc=""
  else
  set @result=@dwmc+@result
  if (@dwid=0) or (@@rowcount=0) 
  set @stop=0
  else
  continue
  end
  set @dwmcresult=rtrim(@result)
  使用exec pro-name [pram1 pram2.....]
  七、在SQL Server中執行存儲過(guò)程:
  sql語(yǔ)句執行的時(shí)候要先編譯,然后執行。存儲過(guò)程就是編譯好了的一些sql語(yǔ)句。用的時(shí)候直接就可以用了。
  在SQL Server的查詢(xún)分析器中,輸入以下代碼:
  declare @tot_amt int
  execute order_tot_amt 1,@tot_amt output
  select @tot_amt
  以上代碼是執行order_tot_amt這一存儲過(guò)程,以計算出定單編號為1的定單銷(xiāo)售金額,我們定義@tot_amt為輸出參數,用來(lái)承接我們所要的結果。
  存儲過(guò)程具有以下特點(diǎn):
  1.具有立即訪(fǎng)問(wèn)數據庫的能力;
  2.是數據庫服務(wù)器端的執行代碼,在服務(wù)器執行操作時(shí),減少網(wǎng)絡(luò )通訊,提高執行效率。
  3.保證數據庫安全,自動(dòng)完成提前設定的作業(yè)。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
存儲過(guò)程
存儲過(guò)程的教程--席子哥哥的小窩
[整理]Oracle面試題(基礎篇)
SQL Server 數據庫映射備份到網(wǎng)絡(luò )目標驅動(dòng)器
SQL Server創(chuàng )建存儲過(guò)程與擴展存儲過(guò)程的應用
在易語(yǔ)言中調用MS SQL SERVER數據庫存儲過(guò)程(Transact
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久