dotConnect for Oracle入門指南(七):存儲過程

【下載dotConnect for Oracle最新版本】sql

dotConnect for Oracle(原名OraDirect.NET)創建在ADO.NET技術上,爲基於Oracle數據庫的應用程序提供完整的解決方案。它爲設計應用程序結構帶來了新的方法,提升工做效率,使數據庫應用程序的開發更簡便。數據庫

本篇文章包含有關存儲過程使用的整體方面的信息。編程

存儲過程是一個模式對象,由一組SQL語句和其餘PL/SQL構造組成,組合在一塊兒,存儲在數據庫中,並做爲一個單元運行以解決特定問題或執行一組相關任務。過程使您可以將SQL的易用性和靈活性與結構化編程語言的過程功能結合起來。可能須要執行多個SQL語句的大型或複雜處理被移到存儲過程當中,而且全部應用程序只調用這些過程。編程語言

相似於存儲過程的對象是存儲函數。幾乎全部對於過程來講都是正確的,也適用於函數。這些對象之間的主要區別在於函數有返回值,而過程沒有。函數

存儲過程和函數能夠有輸入、輸出和輸入/輸出參數。spa

輸入參數是一個參數,其值被傳遞到存儲過程/函數模塊中。In參數的值是常量;不能在模塊中更改或從新分配。設計

例如,如下過程將一行插入到DEPT表中:code

1對象

2ci

3

4

CREATE PROCEDURE dept_insert (pDeptno INTEGER, pDname VARCHAR, pLoc VARCHARAS

BEGIN

  INSERT INTO dept(deptno, dname, loc) VALUES (pDeptno, pDname, pLoc);

END;

它須要接收要插入到新記錄中的值,所以該過程有三個輸入參數,對應於表的每一個字段。該過程能夠在PL/SQL塊內執行,以下所示:

1

2

3

begin

  dept_insert (10, 'Accounting''New York');

end;

輸出參數是一個參數,其值從存儲過程/函數模塊傳遞迴調用的pl/sql塊。out參數必須是變量,而不是常量。它只能在模塊中分配的左側找到。不能將默認值賦給模塊體外部的OUT參數。換句話說,OUT參數的行爲相似於未初始化的變量。在如下示例中,存儲過程返回表dept中的記錄計數:

1

2

3

4

5

CREATE PROCEDURE dept_count (cnt OUT INTEGER)

AS

BEGIN

  SELECT COUNT(*) INTO cnt FROM dept;

END;

輸入/輸出參數是一個做爲輸入或輸出參數或二者兼用的參數。輸入/輸出參數的值被傳遞到存儲過程/函數中,能夠爲該參數分配一個新值並從模塊中傳遞出去。輸入/輸出參數必須是變量,而不是常量。可是,它能夠在任務的兩邊找到。換句話說,一個IN/OUT參數的行爲就像一個初始化的變量。

除了標量變量以外,存儲過程還能夠返回結果集,即SELECT語句的結果。在Oracle中,光標變量用於這種狀況。光標能夠解釋爲對結果集的引用。下面的示例演示如何將最簡單的SELECT語句包裝在存儲過程當中:

1

2

3

4

CREATE PROCEDURE get_all_depts_proc (cur OUT SYS_REFCURSOR) AS

BEGIN

  OPEN cur FOR SELECT FROM dept;

END;

相同的SELECT語句能夠經過存儲函數使用,以下所示:

1

2

3

4

5

6

7

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;

這裏,光標做爲返回值傳遞,而不是做爲輸出參數。

相關文章
相關標籤/搜索