sql使用游标、临时表快速创建数据库表

1、创建数据存储表

-- sql Server批量创建表
--CREATE DATABASE project_flow_management

--GO

USE project_flow_management
GO

--创建临时表
--CREATE TABLE tempTableInfo(
--	fieldName VARCHAR(100),
--	fieldType VARCHAR(100),
--	fieldComments VARCHAR(100)
--)

-- 

2、使用游标创建数据库表

DECLARE @tableName VARCHAR(50)='project_close';   --表名
DECLARE @fieldName VARCHAR(100);				  --字段名
DECLARE @fieldType VARCHAR(100);			      --字段类型
DECLARE @fieldComments VARCHAR(100);			  --字段注释
--存储数据表创建语句
DECLARE @sql1Str VARCHAR(max);
--存储注释修改语句
DECLARE @sql2Str VARCHAR(max);
--空格字符
DECLARE @spaceStr VARCHAR(50)='  ';
-- 声明游标
DECLARE cur_createTable CURSOR SCROLL FOR  
SELECT * FROM  [dbo].[tempTableInfo]  
SET @sql1Str=' CREATE TABLE '+@tableName+' (';
SET @sql2Str='';
--打开游标 
OPEN cur_createTable ;
FETCH NEXT FROM cur_createTable INTO @fieldName,@fieldType,@fieldComments
WHILE  (@@fetch_status=0)
BEGIN
	--1、拼接创建表语句
	SET @sql1Str+=@spaceStr+'['+@fieldName+']'+@spaceStr+@fieldType+@spaceStr+',';
	--2、拼接注释修改语句
	SET @sql2Str +='EXEC sys.sp_addextendedproperty  @name=''MS_Description'', @level0type=''SCHEMA'',@level0name=''dbo'', @level1type=''TABLE'', @level1name='+@tableName+',@level2type=''COLUMN''';
	SET @sql2Str+=' ,@value='''+@fieldComments+''', @level2name='''+@fieldName+''' ; ';
	FETCH NEXT FROM cur_createTable INTO @fieldName,@fieldType,@fieldComments
END 
--关闭游标
CLOSE cur_createTable;
--释放游标
DEALLOCATE cur_createTable;
SET @sql1Str=SUBSTRING(@sql1Str,0,LEN(@sql1Str)-1);
SET @sql1Str+=' ) '
PRINT @sql1Str;
PRINT @sql2Str;
--执行sql
EXEC(@sql1Str);
EXEC(@sql2Str);

3、个人代码

UPDATE   [dbo].[tempTableInfo] SET fieldComments=
(CASE WHEN  fieldName='gmt_create' THEN '创建时间'
 WHEN  fieldName='gmt_modified' THEN '修改时间'
 WHEN  fieldName='gmt_delete' THEN '删除标记'
 WHEN  fieldName='delete_status' THEN '删除状态'
 WHEN  fieldName='data_status' THEN '数据状态'
 WHEN  fieldName='db_time_stamp' THEN '时间戳'
 ELSE  fieldComments
 END )
WHERE 1=1 

如有疑问,可在下方评论或联系 qq: 121813761

未经同意禁止转载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大海中一粒沙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值