編輯此段落示例
數據庫存儲過程
數據庫存儲過程的本質是部署在數據庫端的壹組定義代碼和SQL。提前在SQL語句中編寫常用或復雜的工作,並以指定的名稱存儲,這樣以後想要求數據庫提供與定義的存儲過程相同的服務時,只需要調用execute就可以自動完成命令。使用SQL的語言,可以編寫壹個用於數據庫訪問的存儲過程,其語法如下:create proc[edure]procedure _ name[;number] [{ @ parameter data _ type }][變化] [=默認][輸出] ] [,...n][用{ RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION中的內容}] [for replication]作為SQL _ statement [...n] []是可選的,而()中的內容是必選的。示例:如果用戶想建立壹個存儲過程Select_delete來刪除tmp表中的記錄,可以寫成:create proc Select _ delas delete tmp示例:用戶想查詢存儲過程create proc select _ query @ year int作為TMP表中數據的Select。* from tmp其中year=@year here @year是存儲過程的參數示例:存儲過程從某個節點N開始尋找頂層父節點,這個頻繁使用的過程可以由存儲過程來承擔,可以在網頁中重用實現* * *。空:表示該節點是頂級節點fjdid(父節點號)。節點N不為空:表示該節點的父節點號dwmc(公司名稱)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 no count on set @ stop = 1 set @ dwmc = " " select @ dwmc = dwmc,@dwid=convert(int,fjdid) from jtdw其中id = @ dwidold set @ result = rtrim(@ dwmc)if @ dwid = 0 set @ stop = 0 while(@ stop& gt0)begin Set @ dwidold = @ dwid select @ dwmc = dwmc,@dwid=convert(int,fjdid) from jtdw其中id = @ dwidold if @ @ rowcount = 0 Set @ dwmc = " " else Set @ result = @ dwmc+@ result if(@ dwid = 0)或(@ @ rowcount = 0)Set @ stop = 0 else continue end Set @ dwmc result = rtrim(@ result)Use exec pro-name[pram 1 param 2...]
在SQL Server中執行存儲過程
Sql語句應該在執行前編譯。存儲過程只是編譯的sql語句。用的時候可以直接用。在SQL Server的查詢分析器中,輸入以下代碼:declare @ tot _ AMT int execute order_tot_amt 1,@ tot _ amtOutput select @ tot _ AMT以上代碼用於執行order _ tot _ AMT的存儲過程,計算訂單號為1的訂單銷售額。我們定義@ tot _ amt。
Oracle中的存儲過程
1.創建過程與其他數據庫系統相同。Oracle的存儲過程是用PL/SQL語言編寫的程序,存儲在數據庫字典中。語法:create[or replace]procedure procedure _ name[(argment[{ in | in out }]type,argment[{ in | out | in out }]type { is | as };(註意:沒有使用declare語句)begin < Operative part > exception & lt;可選異常處理描述>;結束;1.1,其中IN表示向存儲過程傳遞參數,OUT表示從存儲過程返回參數。IN OUT表示傳遞參數和返回參數;1.2存儲過程中的參數只能指定參數類型;無法指定長度;1.3聲明AS或IS後要使用的變量名、變量類型和長度;1.4在AS或IS後聲明變量,不要加declare語句。2.用戶使用存儲過程後,只要獲得授權,就可以在SQLPLUS、Oracle開發工具或第三方開發工具中調用和運行。Oracle使用EXECUTE語句調用存儲過程。語法:exec[ute]procedure _ name(parameter 1,parameter 2…);3.開發過程目前幾大數據庫廠商提供的編寫存儲過程的工具並不統壹。雖然他們的寫作風格有些相似,但是因為沒有標準,每個公司的開發和調試流程都不壹樣。下面寫PL/SQL存儲過程、函數、包、觸發器的步驟如下:3.1編輯存儲過程源代碼。用文字處理軟件編輯存儲過程源代碼。用文字處理軟件編輯時,將源代碼保存為文本格式。3.2在SQLPLUS中解釋存儲過程程序或者使用調試工具解釋存儲過程程序;在SQL & gt調試時,可以使用start或get等Oracle命令來開始解釋。如:SQL & gtstart c:\ stat 1 . sq如果使用調試工具,可以直接編輯並點擊相應的按鈕生成存儲過程。[1] 3.3調試源代碼直到正確為止。我們不能保證編寫的存儲過程壹次就正確。所以這裏的調試是每個程序員必須要做的工作之壹。SQLPLUS下的主要調試方法有:1。使用SHOW ERROR命令提示源代碼的錯誤位置;2.使用USER_ERRORS數據字典檢查每個存儲過程的錯誤位置。3.4將執行權限授權給相關用戶或角色。如果正確存儲過程的調試沒有得到授權,那麽只有創建者才能運行它。因此,存儲過程作為應用系統的壹部分,也必須經過授權才能滿足要求。GRANT命令可用於授權在SQLPLUS下運行存儲過程。語法:grant system _ privilege | role to user | role | public[with admin option]或grant object _ privilege | all列。object to user | role | PUBLIC WITH GRANT OPTION其中:system _ privilege:system permission role:role name user:authorized user name object _ privilege:granted permission name,Can ' s alter delete execute index insert references select update column:column name schema:schema name object:object name 4 .數據字典USER_SOURCE用戶的存儲過程,全系統所有用戶的函數的源字典DBA_SOURCE存儲過程,當前用戶(包括其他用戶的授權)可以使用的函數的源字典ALL_SOURCE存儲過程,函數的源字典USER_ERRORS用戶的存儲過程,函數源代碼有錯誤的信息字典。