在存储过程中动态创建表

日期: 2008-07-23 作者:PerfectDesign 来源:TechTarget中国 英文

  在尝试做在线考试系统的过程中,为了管理每个学生的考试信息,就考虑为每个学生创建以学号命名的临时数据表。


  在存储过程中动态创建表如果不使用参数的话很好创建。方法如下:







alter procedure [dbo].[ZXKS_GETSCORE] 
  AS 
  begin transaction 
  –创建临时表,直接命名 
  create table temp_tablename 
  ( 
  id int primary key, 
  da varchar(300), 
  fs int 
  ) 
  declare @count int 
  select @count=@@error 
  if(@count=0) 
  commit transaction 
  else 
  rollback transaction 

  如果要将传入参数作为数据表名的话,就会遇到一个问题:如果表名是数字那么SQL SERVER 2005认不出来,会提示错误。必须将数字的表名前加上非数字的字符。存储过程如下所示:







/* 
  createtable ’123456’ 
  */ 


 







alter procedure createtable 
  @xuehao varchar(20) 
  as 
  declare @tablename varchar(20) 
  set @tablename=’temp’+@xuehao 
  &#101xec(’create Table ’+@tablename+’ 
  ( name nvarchar(15), 
  address nvarchar(50) 
  )’) 


   并且将参数作为数据表名的话,创建方法要使用&#101xec方法,使用前面介绍的那个方法行不通。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐