適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 資料庫
本文描述如何使用 SQL Server Management Studio 以及使用 Transact-SQL CREATE PROCEDURE 陳述式,建立 SQL Server 預存程序。
Permissions
需要在資料庫中的 CREATE PROCEDURE 權限,以及在建立程序時所在的結構描述上的 ALTER 權限。
建立預存程序
你可以使用 SQL Server Management Studio(SSMS),或在 SSMS 查詢視窗中 Transact-SQL,來執行儲存程序。 安裝最新版本的 SQL Server Management Studio(SSMS)。
Note
本文中的預存程序範例使用範例 AdventureWorksLT2022 (SQL Server) 或 AdventureWorksLT (Azure SQL 資料庫) 資料庫。 如需如何取得和使用 AdventureWorksLT 範例資料庫的詳細資訊,請參閱 AdventureWorks 範例資料庫。
使用 SQL Server Management Studio
若要在 SSMS 中建立預存程序:
在 [物件總管] 中,連線到 SQL Server 或 Azure SQL 資料庫的執行個體。
如需詳細資訊,請參閱下列快速入門:
展開執行個體,然後展開 [資料庫]。
展開您要的資料庫,然後展開 [可程式性]。
以滑鼠右鍵按一下 [預存程序],然後選取 [新增]>[預存程序]。 新的查詢視窗隨即開啟,其中包含預存程序的範本。
預設預存程序範本有兩個參數。 如果您的預存程序具有更少、更多參數或沒有參數,請視需要新增或移除範本中的參數行。
在 [查詢] 功能表上,選取 [指定範本參數的值]。
在 [指定範本參數值] 對話框中,提供 [值] 字段的下列資訊:
-
作者:以您的名稱取代
Name。 - 建立日期:輸入今天的日期。
- 描述:簡短描述程序的功能。
-
Procedure_Name:以新的預存程序名稱取代
ProcedureName。 -
@Param1:以您的第一個參數名稱取代
@p1,例如 @ColumnName1。 -
@Datatype_For_Param1:視需要以第一個參數的資料類型取代
int,例如 nvarchar(50)。 -
Default_Value_For_Param1:視需要以第一個參數的預設值或
0取代 。 -
@Param2:以您的第二個參數名稱取代
@p2,例如 @ColumnName2。 -
@Datatype_For_Param2:視需要以第二個參數的資料類型取代
int,例如 nvarchar(50)。 -
Default_Value_For_Param2:視需要以第二個參數的預設值或
0取代 。
下列螢幕擷取畫面顯示範例預存程序的已完成對話框:
-
作者:以您的名稱取代
請選擇 [確定]。
在 [查詢編輯器] 中,以您程序的查詢取代 SELECT 陳述式。
下列程式碼顯示範例預存程序的已完成 CREATE PROCEDURE 陳述式:
-- ======================================================= -- Create Stored Procedure Template for Azure SQL Database -- ======================================================= SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE SalesLT.uspGetCustomerCompany ( -- Add the parameters for the stored procedure here @LastName nvarchar(50) = NULL, @FirstName nvarchar(50) = NULL ) AS /* -- ============================================= -- Author: My Name -- Create Date: 01/23/2024 -- Description: Returns the customer's company name. -- ============================================= */ BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON -- Insert statements for procedure here SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; END GO若要測試此語法,請在 [查詢] 功能表中選取 [剖析]。 改正所有錯誤。
從工具列選取 [執行]。 程序也可建立為資料庫中的物件。
若要查看 [物件總管] 中所列的新程序,請以滑鼠右鍵按一下 [預存程序],然後選取 [重新整理]。
若要執行程序:
在 [物件總管] 中,請以滑鼠右鍵按一下預存程序名稱,然後選取 [執行預存程序]。
在 [執行程序] 視窗中,輸入所有參數的值,然後選取 [確定]。 如需詳細指引,請參閱執行預存程序。
例如,若要執行
SalesLT.uspGetCustomerCompany範例程序,請為 @LastName 參數輸入 Cannon,併為 @FirstName 參數輸入 Chris,然後選取 [確定]。 預存程序隨即執行,並傳回FirstNameChris、LastNameCannon 和CompanyNameOutdoor Sporting Goods。
Important
驗證所有使用者輸入。 在使用者輸入完成驗證前,請勿加以串連。 請勿執行由未經驗證之使用者輸入所建構的命令。
使用 Transact-SQL
若要在 SSMS 查詢編輯器中建立程序:
在 SSMS 中,連線到 SQL Server 或 Azure SQL 資料庫的執行個體。
從工具列中選取 [新增查詢]。
在查詢視窗中輸入下列程序碼,並以您自己的值取代
<ProcedureName>、任何參數的名稱和資料類型以及 SELECT 陳述式。CREATE PROCEDURE <ProcedureName> @<ParameterName1> <data type>, @<ParameterName2> <data type> AS SET NOCOUNT ON; SELECT <your SELECT statement>; GO例如,下列陳述式會在
AdventureWorksLT資料庫中建立與上一個範例相同的預存程序,其程序名稱稍有不同。CREATE PROCEDURE SalesLT.uspGetCustomerCompany1 @LastName nvarchar(50), @FirstName nvarchar(50) AS SET NOCOUNT ON; SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; GO從工具列中選取 [執行] 以執行查詢。 預存程序已建立。
若要執行預存程序,請在新的查詢視窗中輸入 EXECUTE 陳述式,提供任何參數的值,然後選取 [執行]。 如需詳細指引,請參閱執行預存程序。