iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
自我挑戰組

研究visual studio+MSSQL各項技術系列 第 27

MSSQL 預存程序(stored Procedure) - 新增、修改預存程序、預存程序傳入參數

  • 分享至 

  • xImage
  •  

這回來介紹這個,本回就打算用最快的方式寫教學,
大概寫一寫比較常用到的東西就好,其他以後再補充

一、新增預存程序
首先在student資料表底下,有個可程式性,再底下有預序程式的目錄
點右鍵 > 新增 > 預存程序
https://ithelp.ithome.com.tw/upload/images/20231012/2016334021xM0oqV92.png
會有以下的程式碼

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- 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

架構簡單地說是這樣的:
CREATE PROCEDURE storedProcedure名稱
參數宣告
AS
BEGIN
主程式
END
GO

因此可以改成這麼寫:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE 查詢學生資料
AS
BEGIN
	select [id]
      ,[name]
      ,[sex]
      ,[class]
      ,[Chinese]
      ,[English]
      ,[Math]
  FROM [school].[dbo].[student]
END
GO

就能產生新的stored Procedure
https://ithelp.ithome.com.tw/upload/images/20231012/20163340xTka8zX3Z1.png

在想要執行的sp按右鍵,執行預存程序
https://ithelp.ithome.com.tw/upload/images/20231012/20163340veHtZXNi0N.png

它的執行指令如下
https://ithelp.ithome.com.tw/upload/images/20231012/20163340qgkrQb4qU1.png

這個語法可以簡化EXEC sp名稱,執行SP但不收回傳值:

EXEC	 [dbo].[查詢學生資料]

二、傳入參數教學
在上個程式加入以這二行再執行:

USE [school]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[查詢學生資料]
	@class char(1)
AS
BEGIN
	select [id]
      ,[name]
      ,[sex]
      ,[class]
      ,[Chinese]
      ,[English]
      ,[Math]
  FROM [school].[dbo].[student] 
  where class = @class
END

https://ithelp.ithome.com.tw/upload/images/20231012/20163340PzJpbL45Nu.png

執行stored Procedure程式要傳入參數的寫法如下:

EXEC	 [dbo].[查詢學生資料] @class = 'A'

以下是執行後的結果:
https://ithelp.ithome.com.tw/upload/images/20231012/20163340MDpt7Qup2A.png

因為篇幅(?)有限,今天就教到這邊


上一篇
MSSQL暫存資料表、with as (CTE)介紹
下一篇
使用者自訂函數(SQL function)簡單介紹
系列文
研究visual studio+MSSQL各項技術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言