专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » 存储过程创建表:在存储过程中动态创建表 »正文

存储过程创建表:在存储过程中动态创建表

来源: 发布时间:星期二, 2008年7月29日 浏览:463次 评论:0
  在存储过程中动态创建表如果不使用参数的话很好创建;如果要将传入参数作为数据表名的话,就会遇到问题。

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

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

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方法,使用前面介绍的那个方法行不通。

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: