翻譯|使用教程|編輯:李爽夏|2019-01-23 13:17:02.000|閱讀 257 次
概述:本教程說明了有關存儲過程使用的總體方面的信息。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
【下載dotConnect for Oracle最新版本】
dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技術上,為基于Oracle數據庫的應用程序提供完整的解決方案。它為設計應用程序結構帶來了新的方法,提高工作效率,使數據庫應用程序的開發更簡便。
本篇文章包含有關存儲過程使用的總體方面的信息。
存儲過程是一個模式對象,由一組SQL語句和其他PL/SQL構造組成,組合在一起,存儲在數據庫中,并作為一個單元運行以解決特定問題或執行一組相關任務。過程使您能夠將SQL的易用性和靈活性與結構化編程語言的過程功能結合起來。可能需要執行多個SQL語句的大型或復雜處理被移到存儲過程中,并且所有應用程序只調用這些過程。
類似于存儲過程的對象是存儲函數。幾乎所有對于過程來說都是正確的,也適用于函數。這些對象之間的主要區別在于函數有返回值,而過程沒有。
存儲過程和函數可以有輸入、輸出和輸入/輸出參數。
輸入參數是一個參數,其值被傳遞到存儲過程/函數模塊中。In參數的值是常量;不能在模塊中更改或重新分配。
例如,以下過程將一行插入到DEPT表中:
CREATE PROCEDURE dept_insert (pDeptno INTEGER, pDname VARCHAR, pLoc VARCHAR) AS BEGIN INSERT INTO dept(deptno, dname, loc) VALUES (pDeptno, pDname, pLoc); END;
它需要接收要插入到新記錄中的值,因此該過程有三個輸入參數,對應于表的每個字段。該過程可以在PL/SQL塊內執行,如下所示:
begin dept_insert (10, 'Accounting', 'New York'); end;
輸出參數是一個參數,其值從存儲過程/函數模塊傳遞回調用的pl/sql塊。out參數必須是變量,而不是常量。它只能在模塊中分配的左側找到。不能將默認值賦給模塊體外部的OUT參數。換句話說,OUT參數的行為類似于未初始化的變量。在以下示例中,存儲過程返回表dept中的記錄計數:
CREATE PROCEDURE dept_count (cnt OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO cnt FROM dept; END;
輸入/輸出參數是一個作為輸入或輸出參數或兩者兼用的參數。輸入/輸出參數的值被傳遞到存儲過程/函數中,可以為該參數分配一個新值并從模塊中傳遞出去。輸入/輸出參數必須是變量,而不是常量。但是,它可以在任務的兩邊找到。換句話說,一個IN/OUT參數的行為就像一個初始化的變量。
除了標量變量之外,存儲過程還可以返回結果集,即SELECT語句的結果。在Oracle中,光標變量用于這種情況。光標可以解釋為對結果集的引用。下面的示例演示如何將最簡單的SELECT語句包裝在存儲過程中:
CREATE PROCEDURE get_all_depts_proc (cur OUT SYS_REFCURSOR) AS BEGIN OPEN cur FOR SELECT * FROM dept; END;
相同的SELECT語句可以通過存儲函數使用,如下所示:
CREATE OR REPLACE FUNCTION get_all_depts_func RETURN SYS_REFCURSOR AS cur SYS_REFCURSOR; BEGIN OPEN cur FOR SELECT * FROM dept; RETURN cur; END;
這里,光標作為返回值傳遞,而不是作為輸出參數。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn