HOW TO:建立預存程序和使用者定義函式
您可使用伺服器總管建立預存程序。預存程序可定義複雜的商務規則、控制資料修改、透過安全性權限限制存取、提供交易完整性,和經常進行應用程式需要的資料庫作業。
有了 Microsoft SQL Server 2000 (含) 以後版本,您也可使用 [伺服器總管] 建立使用者定義函式。使用者定義函式是一種常式,可壓縮有用的邏輯以便於其他查詢中使用。雖然檢視表受限於單一 SELECT 陳述式,使用者定義函式仍可擁有多重 SELECT 陳述式,並提供比檢視表本身所有之更為強大的邏輯。
使用者定義函式一定會傳回值。依傳回值的類型,各個使用者定義函式可分成三種類別:
[純量值函式] A 使用者定義函式可傳回純量值 (例如整數或時間戳記。如果函式傳回純量值,在查詢中需要資料行名稱時就可以使用。
[內嵌函式] ,如果使用者定義函式包含單一 SELECT 陳述式,且該陳述式可更新,則函式傳回的表格式結果也可更新。這類的函式就稱為內嵌 (Inline) 函式。當內嵌函式傳回資料表時,您可以在其他查詢的 FROM 子句中使用這個函式。如需詳細資訊,請參閱HOW TO:使用資料表以外的項目建立查詢。
[資料表值函式] ,如果使用者定義函式包含多個 SELECT 陳述式或包含不可更新的 SELECT 陳述式,則該函式傳回的表格式結果不可更新。在表格值函式傳回資料表時,可以在其他查詢的 FROM 子句中使用該函式。
注意事項 |
---|
在下列範例中,dbo 是資料庫擁有人名稱的縮略字,可用來限定預存程序和使用者定義函式名稱。dbo 是具有基本權限可執行資料庫中所有動作的使用者。由系統管理員角色的任何成員所建立的物件,皆自動歸屬於 dbo。在下列範例中,包含 dbo 名稱限定詞 (Qualifier)。 |
注意事項 |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要建立新的預存程序
在 [伺服器總管] 中,在 [預存程序] 資料夾或該資料夾中的任一預存程序上按一下滑鼠右鍵。
在捷徑功能表上選擇 [加入新的預存程序]。
新的預存程序是以下列基本架構 SQL 陳述式建立而成:
CREATE PROCEDURE dbo.StoredProcedure1 /* ( @parameter1 datatype = default value, @parameter2 datatype OUTPUT ) */ AS /* SET NOCOUNT ON */ RETURN
您可以將第一行的 StoredProcedure1 替換為新程序的名稱。例如,您可以使用 MyProcedure 做為名稱:
CREATE PROCEDURE dbo.MyProcedure
注意事項 預存程序必須具備唯一名稱。如果您選擇的名稱已指派給其他預存程序,則會出現錯誤訊息,警告您相同名稱的預存程序已存在。
在 SQL 內編寫其餘的程序文字。
如需預存程序的詳細資訊和範例,請參閱您的資料庫伺服器文件。如果您使用 Microsoft SQL Server,請參閱<建立程序> 《SQL Server 線上叢書》。
若要建立新的使用者定義函式
在 伺服器總管] 內,於 [函式] 資料夾或該資料夾中的任一函式上按一下滑鼠右鍵。
在捷徑功能表上指向 [加入新的],然後選擇 [內嵌函式]、[資料表值函式] 或 [純量值函式]。
注意事項 您不可將新函式的基本架構 SQL 陳述式,修改為不同函式型別的 SQL 陳述式,並儲存結果。例如,如果您從內嵌函式開始,則不可將 SQL 陳述式修改為純量值函式。否則會導致儲存程序失敗。
使用基本架構 SQL 陳述式建立新的使用者定義函式。例如,選擇 [純量值函式] 會顯示出下列基本架構 SQL 陳述式:
CREATE FUNCTION dbo.Function1 ( /* @parameter1 datatype = default value, @parameter2 datatype */ ) RETURNS /* datatype */ AS BEGIN /* sql statement ... */ RETURN /* value */ END
您可以將第一行的 Function1 替換為新函式的名稱。例如,您可以使用 MyFunction 做為名稱:
CREATE FUNCTION dbo.MyFunction
注意事項 使用者定義函式必須具有唯一名稱。如果您選擇的名稱已指派給其他函式,則會出現錯誤訊息,警告您該名稱的函式已存在。
在 SQL 中編寫其餘的函式文字。
注意事項 |
---|
如果捷徑功能表沒有提供您所需的選項,則您所使用的 Visual Studio 版本可能不支援這個功能。如需詳細資訊,請參閱 Visual Database Tools 版本。 |
如需使用者定義函式的詳細資訊和範例,請參閱您的資料庫伺服器文件。如果您使用 Microsoft SQL Server,請參閱<建立函式> 《SQL Server 線上叢書》。