2006-12-11

教你使用数组一样使用数据表变量

来源: 本站收集整理 作者:佚名 评论 0 条
 

虽然你可以使用数组一样使用一个数据表变量,对于它能够使用的数据类型是有限制的。例如,你不能在一个数据表变量中包含另一个数据表变量。

你可以象申明一个用户定义的数据表一样申明一个数据表变量;但是,在你申明了它以后,你就不能再改变数据表的定义了。另外,你必须在申明的时候定义数据表变量的所有属性。

并不是所有的INSERT命令都能够在数据表变量上操作。例如,你不能在向数据表变量插入值的时候使用EXEC命令。执行一个存储过程或者插入值到数据表变量的字符串命令会返回一个错误。同样,不是所有的SELECT 命令都能够在数据表变量上操作而且你不能使用SELECT INTO 命令来插入数据到一个数据表变量中去。

你不能在数据表变量上使用一些系统过程,比方sp_depends。数据表变量的对象名在运行时生成,并且是一个随机的名字,它被保存在tempdb数据库里。因为大多数的系统功能和系统过程需要对象名或者标识数值,所以要在一个数据表变量上执行系统功能或者过程是困难的。需要复杂的逻辑来获得对象的名字以及/或者标识数值来运行系统功能和过程。

一个数据表变量的作用域是批处理过程,存储过程或者函数执行的过程。当批处理过程中GO命令被触发了,数据表变量也就出离了它的作用域。

下面是在一个存储过程中使用一个数据表变量的简单脚本。

  

  CREATE PROCEDURE TestName

  

  AS

  

  DECLARE @TableId TABLE

  

  (table_id INT IDENTITY NOT NULL

  

  primary key nonclustered,

  

  id INT NOT NULL,

  

  name sysname NOT NULL

  

  DEFAULT 'UNKNOWN',

  

  type char(2) NOT NULL

  

  DEFAULT '9',

  

  crdate datetime NOT NULL

  

  DEFAULT current_timestamp)

  

  INSERT @TableId (id, name, type, crdate)

  

  SELECT id, 'test_'   name, type, crdate FROM tempdb..sysobjects

  

  SELECT * FROM @TableID

  

  GO

  

  exec TestName

  

  GO

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:使用PHP写MySQL数据库用户认证系统  
下一篇:PHP动态网站开发中常用的8个小技巧
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号