WEB开发网
开发学院数据库MSSQL Server SQL Server 2008:表值参数的创建和使用 阅读

SQL Server 2008:表值参数的创建和使用

 2008-05-27 09:55:36 来源:WEB开发网   
核心提示: useTestDBgoselect*fromTestLocationTablego查询结果如下所示:Id,shortname,name1,NA1,NewYork2,NA2,NewYork3,NA3,NewYork4,EU1,London5,EU2,London6,AS1,Tokyo7,AS

  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版本上进行编写并经过测试的。

上一页  1 2 3 4 

Tags:SQL Server 参数

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接