1. 程式人生 > >SQL 用戶定義表類型,在存儲過程裏使用數據類型作參數

SQL 用戶定義表類型,在存儲過程裏使用數據類型作參數

type 查詢 學生 tab net 一個 不同 tex src

在數據庫編程裏使用數據類型,能夠提高代碼的重用性。它們常常被使用在方法和存儲過程中。使用數據類型,我們能夠避免在存儲過程裏定義一串的參數,讓人眼花繚亂,它就相當於面向對象語言裏。向一個方法裏傳入一個對象,而該對象有各種屬性,存儲過程僅僅須要獲取這個對象就能獲取到各個參數,然後做出對應的處理。有所不同的是SQL的表類型是能夠包括多條數據的。到底是怎麽一回事,且看以下的樣例。


1. 首先我創建了一個學生表,包括四個字段,主鍵是從1開始的自增長型。

GO
CREATE TABLE STUDENT(
	ID INT IDENTITY(1,1) PRIMARY KEY,
	NAME VARCHAR(50),
	SEX CHAR,
	PHONE VARCHAR(20),
);

2.定義表類型SUTDENTTYPE,包括三個字段,分別相應學生表的NAME,SEX和PHONE。之所以如此創建,我是準備在插入新學生數據的存儲過程中。以它為參數。

GO
CREATE TYPE SUTDENTTYPE AS TABLE(
	NAME VARCHAR(50),
	SEX CHAR,
	PHONE VARCHAR(20)
);


3.創建插入學生信息的存儲過程。它的參數類型是表類型STUDENTTYPE。

取出表類型裏存儲的各條學生記錄,將其插入到學生信息表中。

GO
CREATE PROCEDURE ADDSTUDENT
	@NEW_STUDENT AS SUTDENTTYPE READONLY

	AS
	INSERT INTO STUDENT (NAME, SEX, PHONE)
		SELECT NAME, SEX, PHONE FROM @NEW_STUDENT;

	RETURN 0;

4.最後建立參數值並運行存儲過程ADDSTUDENT。

GO
DECLARE @NEW_STUDENT as SUTDENTTYPE

INSERT @NEW_STUDENT
 VALUES ('YLD', 'M', '888')
      , ('MM', 'F', '123')
      , ('HQG', 'F', '678')
; 
EXEC ADDSTUDENT @NEW_STUDENT


5.查詢STUDENT表的信息,發現已經成功插入了三條學生信息。

技術分享

SQL 用戶定義表類型,在存儲過程裏使用數據類型作參數