CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: 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专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i