2018年5月13日 星期日

快速於MS SQL Server上建立 Stored Procedure (預存程序)

使用工具:Microsoft SQL Server Management Studio

首先於物件總管中,資料庫→SampleDB→可程式性→預存程序,右鍵→新增→預存程序

會先看到如下區段的範本
-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <作者名>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> 
-- Add the parameters for the stored procedure here
<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

    -- Insert statements for procedure here
SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO

範例:
我要建立一個名為PROC_TestInput,有兩個輸入參數,型態分別為 NVARCHAR 與 INT
之後再將這兩個輸入參數寫入至 資料庫中的 Student

所以我需要把上面改成以下這樣

CREATE PROCEDURE PROC_Test
@Param1 NVARCHAR(50),
@Param2 int
AS
BEGIN
SET NOCOUNT ON;

Insert into TestTable(Name, Age) Values( @Param1, @Param2 )
END
GO
大概說明一下

CREATE PROCEDURE PROC_Test
這一行是指建立一個名為「PROC_Test」的Store Procedure

@Param1 NVARCHAR(50) 這一行則是建立一個名為 @Param1 ,型態是 NVARCHAR(50) 的
輸入參數,如果要有多個參數只用「,」隔開即可

Insert into TestTable(Name, Age) Values( @Param1, @Param2 ) 這個就標準的 t-SQL 的 Insert語法,唯一不同的是,後面的 Values的部分是指定上面建立的輸入參數

設定都完成時,直接點一下Management Studio 上的「執行」即會依上面的設定建立起
Stored Procedure了