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表的信息,发现已经成功插入了三条学生信息。



转载于:https://www.cnblogs.com/mfmdaoyou/p/6857847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值