SQL Server 2008:表值参数的创建和使用
2008-05-27 09:55:36 来源:WEB开发网 useTestDB
go
select*fromTestLocationTable
go
查询结果如下所示:
Id,shortname,name
1,NA1,NewYork
2,NA2,NewYork
3,NA3,NewYork
4,EU1,London
5,EU2,London
6,AS1,Tokyo
7,AS2,HongKong
12,ME1,Dubai
13,ME2,Tehran
17,EA1,Bombay
18,EA2,Karachi
(11row(s)affected)
从返回的结果,我们可以看到存储过程usp_InsertProdLocation 插入了表变量@TV中和表TestLocationTable所有不匹配的行。
我们还可以将表变量传递给一个函数。下面我们创建一个简单的函数,语句如下:
USE[TestDB]
GO
IFEXISTS(SELECT*FROMsys.objects
WHEREobject_id=OBJECT_ID(N'[dbo].[myfunction]')ANDtypein(N'FN',N'IF',N'TF',N'FS',N'FT'))
DROPFUNCTION[dbo].[myfunction]
GO
createfunctiondbo.myfunction(@TVOfficeLocation_TabetypeREADONLY)
returnsint
as
begin
declare@iint
set@i=(SelectCOUNT(*)from@TV)
return@i
end
现在,我们通过创建一个表变量并将该变量作为一个参数传递给已创建的函数以调用该函数,语句如下:
USE[TestDB]
GO
DECLARE@TVAS[OfficeLocation_Tabetype]
INSERTINTO@TV(Id,Shortname,Name)SELECT12,'ME1','Dubai'
INSERTINTO@TV(Id,Shortname,Name)SELECT13,'ME2','Tehran'
INSERTINTO@TV(Id,Shortname,Name)SELECT17,'EA1','Bombay'
INSERTINTO@TV(Id,Shortname,Name)SELECT18,'EA2','Karachi'
INSERTINTO@TV(Id,Shortname,Name)SELECT3,'NA3','NewYork'
INSERTINTO@TV(Id,Shortname,Name)SELECT4,'EU1','London'
selectdbo.myfunction(@TV)
go
执行结果如下:
(1row(s)affected)
(1row(s)affected)
(1row(s)affected)
(1row(s)affected)
(1row(s)affected)
(1row(s)affected)
-----------
6
注:上面所演示的脚本都是在SQL Server 2008 CTP6版本上进行编写并经过测试的。
- ››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表' (数...
更多精彩
赞助商链接