共用方式為


HOW TO:建立預存程序和使用者定義函式

更新:2007 年 11 月

您可使用伺服器總管建立預存程序。預存程序可定義複雜的商務規則、控制資料修改、透過安全性權限限制存取、提供交易完整性,和經常進行應用程式需要的資料庫作業。

有了 Microsoft SQL Server 2000 (含) 以後版本,您也可使用 [伺服器總管] 建立使用者定義函式。使用者定義函式是一種常式,可壓縮有用的邏輯以便於其他查詢中使用。雖然檢視表受限於單一 SELECT 陳述式,使用者定義函式仍可擁有多重 SELECT 陳述式,並提供比檢視表本身所有之更為強大的邏輯。

使用者定義函式一定會傳回值。依傳回值的類型,各個使用者定義函式可分成三種類別:

  • 純量值函式:使用者定義函式可傳回純量值,例如整數或時間戳記。如果函式傳回純量值,可用於查詢中任何需要使用資料行名稱之處。

  • 內嵌函式:如果使用者定義函式包含單一 SELECT 陳述式,且該陳述式可更新,則函式傳回的表格式結果亦可更新。這類的函式就稱為內嵌 (Inline) 函式。當內嵌函式傳回資料表時,您可以在其他查詢的 FROM 子句中使用這個函式。如需詳細資訊,請參閱 HOW TO:使用資料表以外的項目建立查詢

  • 資料表值函式:如果使用者定義函式包含多個 SELECT 陳述式,或者包含不可更新的 SELECT 陳述式,則該函式傳回的表格式結果不可更新。在表格值函式傳回資料表時,可以在其他查詢的 FROM 子句中使用該函式。

注意事項:

在下列範例中,dbo 是資料庫擁有人名稱的縮略字,可用來限定預存程序和使用者定義函式名稱。dbo 是具有基本權限可執行資料庫中所有動作的使用者。由系統管理員角色的任何成員所建立的物件,皆自動歸屬於 dbo。在下列範例中,包含 dbo 名稱限定詞 (Qualifier)。

注意事項:

根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定

若要建立新的預存程序

  1. 在 [伺服器總管] 中,在 [預存程序] 資料夾或該資料夾中的任一預存程序上按一下滑鼠右鍵。

  2. 在快速鍵功能表上選擇 [加入新的預存程序]。

    新的預存程序是以下列基本架構 SQL 陳述式建立而成:

    CREATE PROCEDURE dbo.StoredProcedure1
    /*
       (
          @parameter1 datatype = default value,
          @parameter2 datatype OUTPUT
       )
    */
    AS
       /* SET NOCOUNT ON */
       RETURN
    
  3. 您可以將第一行的 StoredProcedure1 替換為新程序的名稱。例如,您可以使用 MyProcedure 做為名稱:

    CREATE PROCEDURE dbo.MyProcedure
    
    注意事項:

    預存程序必須具備唯一名稱。如果您選擇的名稱已指派給其他預存程序,則會出現錯誤訊息,警告您相同名稱的預存程序已存在。

  4. 在 SQL 內編寫其餘的程序文字。

    如需預存程序的詳細資訊和範例,請參閱您的資料庫伺服器文件。如果您使用 Microsoft® SQL Server™,請參閱《SQL Server 線上叢書》的<建立程序>部分。

若要建立新的使用者定義函式

  1. 在 伺服器總管] 內,於 [函式] 資料夾或該資料夾中的任一函式上按一下滑鼠右鍵。

  2. 在快速鍵功能表上指向 [加入新的],然後選擇 [內嵌函式]、[資料表值函式] 或 [純量值函式]。

    注意事項:

    您不可將新函式的基本架構 SQL 陳述式,修改為不同函式型別的 SQL 陳述式,並儲存結果。例如,如果您從內嵌函式開始,則不可將 SQL 陳述式修改為純量值函式。否則會導致儲存程序失敗。

    使用基本架構 SQL 陳述式建立新的使用者定義函式。例如,選擇 [純量值函式] 會顯示出下列基本架構 SQL 陳述式:

    CREATE FUNCTION dbo.Function1
       (
       /*
       @parameter1 datatype = default value,
       @parameter2 datatype
       */
       )
    RETURNS /* datatype */
    AS
       BEGIN
          /* sql statement ... */
       RETURN /* value */
       END
    
  3. 您可以將第一行的 Function1 替換為新函式的名稱。例如,您可以使用 MyFunction 做為名稱:

    CREATE FUNCTION dbo.MyFunction
    
    注意事項:

    使用者定義函式必須具有唯一名稱。如果您選擇的名稱已指派給其他函式,則會出現錯誤訊息,警告您該名稱的函式已存在。

  4. 在 SQL 中編寫其餘的函式文字。

注意事項:

如果快速鍵功能表沒有提供您所需的選項,則您所使用的 Visual Studio 版本可能不支援這個功能。如需詳細資訊,請參閱 Visual Database Tools 版本

如需使用者定義函式的詳細資訊和範例,請參閱您的資料庫伺服器文件。如果您使用 Microsoft® SQL Server™,請參閱《SQL Server 線上叢書》的<建立函式>部分。

請參閱

概念

在查詢中使用運算式

其他資源

使用預存程序和使用者定義函式