SQL 用户定义表类型,在存储过程里使用表类型,表参数作参数
.定义表类型SUTDENTTYPE,包含三个字段,分别对应学生表的NAME,SEX和PHONE。之所以如此创建,我是准备在插入新学生数据的存储过程中,以它为参数。
GO
CREATE TYPE SUTDENTTYPE AS TABLE(
NAME VARCHAR(50),
SEX CHAR,
PHONE VARCHAR(20)
);
创建插入学生信息的存储过程,它的参数类型是表类型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;
最后建立参数值并执行存储过程ADDSTUDENT。
GO
DECLARE @NEW_STUDENT as SUTDENTTYPE
INSERT @NEW_STUDENT
VALUES ('YLD', 'M', '888')
, ('MM', 'F', '123')
, ('HQG', 'F', '678')
;
EXEC ADDSTUDENT @NEW_STUDENT