共用方式為


如何:建立預存程序和使用者定義函式

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

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

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

  • [純量值函式] A 使用者定義函式可傳回純量值 (例如整數或時間戳記。 如果函式傳回純量值,在查詢中需要資料行名稱時就可以使用。

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

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

注意事項注意事項

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

注意事項注意事項

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置:您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 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 線上叢書》。

請參閱

概念

在查詢中使用運算式

其他資源

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