动态生成数据表
来源:互联网 发布:华南师范网络自助平台 编辑:程序博客网 时间:2024/05/02 04:57
今天同事让我修改他以前写的动弹生成表以及字段的存储过程,因为以前只有3中选项类型,
现在7种类型,所以要重新生成答案表。所以这个小任务就落在我身上了。。呵呵。
其实问题也简单了。因为他以前已经写了我只要加个判断就可以了。。。
所以废话不多说了。
贴代码先。备忘。
USE [Qn]
GO
/******
对象: StoredProcedure [dbo].[CreateTable]
脚本日期: 05/05/2008 08:40:45
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- =============================================
CREATE PROCEDURE [dbo].[CreateTable]
AS
BEGIN
declare @sid varchar(10);
declare @qd int;
declare @qt int;
declare @i int declare @j int;
declare @str varchar(max);
declare @num int;
declare @createtable varchar(max)
set @num=0 select top 1 @sid=SID from Questionnaire order by SID desc
IF not EXISTS (SELECT name FROM sysobjects WHERE name ='answer'+@sid )
begin --begin0开始
/*----------创建表和非题目字段-----------------*/
set @createtable= 'create table answer'+@sid+' (AID int identity(1,1) primary key,
UID varchar(MAX), ADateTime datetime)' exec(@createtable)
/*----------创建表和非题目字段结束-----------------*/
declare cursor_find cursor for select QID,Qtype from Question where SID=@sid
open cursor_find fetch cursor_find into @qd,@qt while @@fetch_status=0
begin
------循环遍历每条记录begin1开始
set @num=@num+1 if(@qt=5)
---对多选进行处理begin2开始
begin
set @j=1 select @i=count(*) from [Option] where QID=@qd while(@j<=@i)
begin
---解决多选的选项 begin3开始
set @createtable='alter table answer'+@sid+' add Q'+convert(varchar(50),@num)+'0'+convert(varchar(50),@j)+' varchar(max)' exec( @createtable)
--print 'Q'+convert(varchar(50),@num)+'0'+convert(varchar(50),@j)
set
@j=@j+1
end
---begin3结束
end
----begin2结束
else if(@qt=6)
---对多选加文本的处理
begin
set @j=1 select @i=count(*) from [Option] where QID=@qd while(@j<=@i+1)
begin
if(@j=@i+1)
begin
set @createtable='alter table answer'+@sid+' add Q'+'txt'+convert(varchar(50),@num)+' text' exec( @createtable)
end
else
begin
set @createtable='alter table answer'+@sid+' add Q'+convert(varchar(50),@num)+'0'+convert(varchar(50),@j)+' varchar(max)'
exec( @createtable)
--print 'Q'+convert(varchar(50),@num)+'0'+convert(varchar(50),@j)
end
set
@j=@j+1 end end else if(@qt=4)
---对单选加文本的处理
begin
---添加代码
set @createtable='alter table answer'+@sid+' add Q'+convert(varchar(50),@num)+' varchar(max)'
exec( @createtable)
set
@createtable='alter table answer'+@sid+' add Q'+'txt'+convert(varchar(50),@num)+' text'
exec( @createtable)
end
else --处理非多选项begin4开始
begin
set @createtable='alter table answer'+@sid+' add Q'+convert(varchar(50),@num)+' varchar(max)' exec( @createtable)
end
---begin4结束
fetch cursor_find into @qd,@qt
end
---begin1结束
close cursor_find deallocate cursor_find
end
--begin0结束
END
- 动态生成数据表
- 动态生成数据表
- ASP.NET从数据表生成动态菜单
- ASP.NET从数据表动态生成TreeView树
- 根据Django Model动态生成数据表的方法
- 数据表生成sql脚本
- JPA自动生成数据表
- 生成自动化数据表
- 数据表生成javabean工具
- 使用SchemaExport生成数据表
- CodeSmith生成数据表实体类
- hibernate注解自动生成数据表
- hibernate注解自动生成数据表
- jsp 简单生成excel数据表
- NOPI实现生成Excel数据表
- 改用C++生成自动化数据表
- hibernate注解自动生成数据表
- 改用C++生成自动化数据表
- 12.1.3 自定义播放界面
- 网站中的图片缓存
- 12.1.4 加载和播放声音
- .net中Web.config文件的基本原理及相关设置
- 在家里最简单有效的身体锻炼方法
- 动态生成数据表
- 12.1.5 追踪音频进度
- hibernate ehcache
- 什么是GPA,应如何计算?
- 男女众生应该佩带什么样的佛像(商机)
- 服务开发方案
- jfreechart1
- ASP.NET项目开发中的工厂模式
- (技巧)巧设多DNS解析提高网通电信互访速度