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


在數據庫編程里使用數據類型,能夠提高代碼的重用性。它們常常被使用在方法和存儲過程中。使用數據類型,我們能夠避免在存儲過程里定義一串的參數,讓人眼花繚亂,它就相當於面向對象語言里。向一個方法里傳入一個對象,而該對象有各種屬性,存儲過程僅僅須要獲取這個對象就能獲取到各個參數,然后做出對應的處理。有所不同的是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表的信息,發現已經成功插入了三條學生信息。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM