SQL Server 2008 表值类型参数
2008-09-28 10:07:00 来源:WEB开发网注意: 插入的行在客户端的临时表中产生。
查看并选中 下列代码并点击Execute:
USE SQL2008Demo
GO
exec dbo.NewEmployeeTempTable
查看并选中 下列代码并点击Execute:
USE SQL2008Demo
GO
SELECT * FROM dbo.Employee
GO
查看并选中 下列代码并点击Execute:
USE SQL2008Demo
GO
Drop table dbo.#EmployeeTempTable
GO
注意:
1.临时表是在磁盘上创建并操作的,这将会导致大量的I/O操作。
2.它们在tempdb数据库中进行创建,并非常会导致锁定与阻碍问题。
3.在使用完成后,您必需手动清理数据,并删除临时表。
4.临时表的使用将会导致频繁的存储过程的重新编译。
使用表值类型参数插入数据
查看并选中 下列代码并点击Execute:
USE SQL2008DEMO
GO
Truncate table dbo.Employee
查看并选中 下列代码并点击Execute:
USE SQL2008DEMO
GO
CREATE TYPE EmployeeTableType AS TABLE
(EmpID INT, EmpName nvarchar(100), EmpEmail nvarchar(100))
注意: 在这里需要创建一个表类型来处理表值类型参数。
查看并选中 下列代码并点击Execute:
USE SQL2008DEMO
GO
CREATE PROCEDURE NewEmployee(@EmployeeDetails EmployeeTableType READONLY)
As
BEGIN
INSERT INTO dbo.Employee
SELECT * FROM @EmployeeDetails
END
注意: 表值类型参数必须作为输入类型的只读(READONLY)参数传递到过程当中。在过程体当中,您不能在表值类型参数上执行DML操作,如UPDATE, DELETE, 或INSERT操作。
查看并选中 下列代码并点击Execute:
USE SQL2008Demo
GO
DECLARE @NewEmployees EmployeeTableType
INSERT INTO @NewEmployees
VALUES(1,'John McLean','JohnMcLean@contoso.com')
INSERT INTO @NewEmployees
VALUES(2,'Bob Smith','BobSmith@contoso.com')
INSERT INTO @NewEmployees
VALUES(3,'Ted Connery','TedConnery@contoso.com')
EXECUTE NewEmployee @NewEmployees
Go
注意: 在过程操作完成后,表值类型参数将不会再存在。
查看并选中 下列代码并点击Execute:
USE SQL2008Demo
GO
select * from dbo.Employee
注意: 使用表值类型参数的优势
表值类型参数提供了更好的灵活性,并且在许多情况下,可以提供比临时表或其它传递列表类型类型的方式更好的性能。表值类型参数提供了下列一些优势:
拥有一个良好定义的范围,在这个执行范围结束后,它将会自动清除。
不需要在客户端锁定正在处理的数据。
不会导致语句的重新编译。
提供了一个非常简单的编程模型。
可以让您在一个单一的过程当中引入复杂的业务逻辑。
减少与服务器的返回行程。
可以拥有不同粒度的表结构。
是一个强类型的类型定义。
允许客户端指定排序顺序和唯一键。
关闭所有应用程序并不要保存所有更改。
关闭Virtual PC 并不要保存更改。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接