[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

在存储过程中动态创建表

作者: PerfectDesign ,  出处:blog, 责任编辑: 王晓晨, 
2008-07-24 08:10
  在存储过程中动态创建表如果不使用参数的话很好创建;如果要将传入参数作为数据表名的话,就会遇到问题。

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

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

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
  exec('Create Table '+@tablename+'
  ( name nvarchar(15),
  address nvarchar(50)
  )')

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

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅