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

时间: 2024-10-03 22:51:45

SQL 用户定义表类型,在存储过程里使用数据类型作參数的相关文章

SQL——用户定义函数

根据用户定义函数返回值的类型,可将用户定义函数分为如下三个类别: (1) 返回值为可更新表的函数 若用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表也可更新,这样的函数称为内嵌表值函数. (2) 返回不可更新数据表的函数 若用户定义函数包含多个 SELECT 语句,则该函数返回的表不可更新.这样的函数称为多语句表值函数. (3) 返回标量值的函数 用户定义函数返回值为标量值,这样的函数称为标量函数. 用户定义函数不支持输出参数.用户定义函数不能修改全局数据库状态. 利用A

C#调用自己定义表类型參数

-SQL SERVER生成測试环境: --创建測试DB CREATE database Sales; go USE Sales GO --创建表类型 IF TYPE_ID('LocalDT') IS NOT NULL DROP TYPE LocalDT GO CREATE TYPE LocalDT AS TABLE ( ID INT NOT NULL, Name NVARCHAR(50) ) GO --创建存储过程 IF OBJECT_ID('P_DataTable','P') IS NOT N

.NET反射用户定义枚举类型

示例代码: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 namesp

SQL 查询某个表被哪些存储过程使用到

--1.查询某个表被哪些存储过程使用到 : select distinct object_name(id) from syscomments where id in (select object_id from sys.objects where type ='P') and text like'%TableName%' --2.查找那些过程对该表做了更新操作: select distinct object_name(id) from syscomments where id in(select

sql 创建多表删除的存储过程

CREATE PROCEDURE [dbo].[存储哦过程的名称] @userID varchar(50) --声明变量ASBEGINIF(@userID='' OR @userID IS NULL) --判断是否输入BEGIN   SELECT '0' as 'message','请输入要删除的用户ID!' AS 'ErrorInfo' --提示信息   RETURNEND BEGIN TRANSACTION --开启事务 DELETE FROM 表1 WHERE ID = @userID;

SQL 查看某个表被哪些存储过程或者视图使用

--查询某个表被哪些视图/存储过程使用(type='P':表示存储过程,type='V':表示视图) SELECT OBJECT_NAME(id) FROM syscomments WHERE id IN(SELECT object_id FROM sys.objects WHERE type='P')AND text LIKE '%表名称%' 原文地址:https://www.cnblogs.com/weipf/p/10829771.html

sql server2008系统表详细说明sys.开头的表

一.库里有多少个表,表名等 select * from INFORMATION_SCHEMA.TABLES 二.查询表.字段.类型.是否主键.长度.小数位.是否允许空.默认值等详细查询 效果: SELECT (case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空 a.colorder as 字段序号, a.name as 字段名, (case when COLUMNPROPERTY( a.id,a.name,'IsI

SQL Server 2008 表变量参数(表值参数)用法

表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据. 表值参数与 OLE DB 和 ODBC 中的参数数组类似,但具有更高的灵活性,且与 Transact-SQL 的集成更紧密.表值参数的另一个优势是能够参与基于数据集的操作. (注意:Transact-SQL 通过引用向例程传递表值参数,以避免创建输入数据的副本.) 在 Tra

调试SQL Server的存储过程及用户定义函数

分类: 数据库管理 2005-06-03 13:57 9837人阅读 评论(5) 收藏 举报 sql server存储vb.net服务器sql语言 1.在查询分析器中调试 查询分析器中调试的步骤如下:    SQL 2000查询分析器        --左连的对象浏览器(没有的话按F8)        --对象项中        --右键调试的存储过程        --调试        --输入参数(必须输入所有的参数,包括默认值/输出参数        --点击执行        --出现