mssql 返回表的创建语句
if OBJECT_ID('sp_create_table_sql','P') is not null
drop proc sp_create_table_sql
go
create proc sp_create_table_sql ( @tablename varchar(255) )
as
begin
-- exec sp_create_table_sql 'Ad_AdGroup'
-- 0. 弘恩
-- 1. 不支持非主键类的索引
-- 2. 不支持主分键的非默认排序
-- 3. 不支持DEFAULT
-- 4. 不支持计算列
-- 5. 待完整
declare @sql_create varchar(max) = '';
declare @sql_column varchar(max);
declare @sql_primary varchar(max);
with cte as
(
select QUOTENAME( c.name )+' '+
TYPE_NAME(c.system_type_id)+' '+
case when TYPE_NAME( c.system_type_id) in ('char','varchar','decimal') then ' ( ' else '' end +
case when TYPE_NAME( c.system_type_id) in ('char','varchar','nvarchar' ) then cast(max_length as varchar) else '' end+
case when TYPE_NAME( c.system_type_id) in ('decimal' ) then cast(c.precision as varchar)+','+cast(c.scale AS varchar) else '' end+
case when TYPE_NAME( c.system_type_id) in ('char','varchar','decimal') then ' ) ' else '' end +
case when c.is_nullable = 1 then ' null ' else ' not null ' end +
case when c.is_identity = 0 then ' ' else ' identity ' end sqlstr ,
column_id
from sys.objects as o
join sys.columns as c on o.object_id = c.object_id
where o.name = @tablename and o.type = 'U'
)
select @sql_column = stuff(
(select ',' + sqlstr + CHAR(10)
from cte
order by column_id asc
for xml path('') ),1,1,'')
;
select @sql_primary = stuff((
select ',' + c.name
from sys.index_columns as i
join sys.indexes as ix on i.object_id = ix.object_id and i.index_id = ix.index_id
join sys.columns as c on i.object_id = c.object_id and i.column_id = c.column_id
where OBJECT_NAME(i.object_id) = @tablename
and ix.is_primary_key = 1
order by i.key_ordinal
for xml path('')
),1,1,'')
set @sql_create = ' create table ' + @tablename + '( '
+ @sql_column
+ case when len(@sql_primary) >= 1 then (', primary key ( ' + @sql_primary + ')') else '' end
+ ' ) '
print ' -- @sql_create -- '
print @sql_create
end
mssql 返回表的创建语句的更多相关文章
- 通过Oracle DUMP 文件获取表的创建语句
1. 有了dump文件之后 想获取表的创建语句. 之前一直不知道 dump文件能够直接解析文件. 今天学习了下 需要的材料. dump文件, dump文件对应的schema和用户. 以及一个版本合适的 ...
- 通过phoenix创建hbase表失败,创建语句卡住,hbase-hmaster报错:exception=org.apache.hadoop.hbase.TableExistsException: SYNC_BUSINESS_INFO_BYDAY_EFFECT
问题描述: 前几天一个同事来说,通过phoenix创建表失败了,一直报表存在的错误,删除也报错,然后就针对这个问题找下解决方案. 问题分析: 1.通过phoenix创建表,一直卡住不动了.创建语句如下 ...
- oracle中查询用户表/索引/视图创建语句
不多说,直接上干货 1.查询当前用户下表的创建语句 select dbms_metadata.get_ddl('TABLE','ux_future') from dual; 2.查询其他用户下表的创建 ...
- (转载)根据数据字典表定义的表结构,生成创建表的SQL语句
<来源网址:http://www.delphifans.com/infoview/Article_221.html>根据数据字典表定义的表结构,生成创建表的SQL语句 //1. 类名:T ...
- 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍
第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...
- Mysql的基础使用之SQL原生语句的使用:表的 创建 删除 修改 (一)
上一篇主要讲的是关于Mysql的分支MariaDB在Linux下的安装 顺利安装完成的小伙伴,就可以接着来试试SQL的魅力了 红色为命令 蓝色为自定义名 查看数据库 MariaDB [(none)]& ...
- sqlserver查询所有表名、字段名、类型、长度和存储过程、视图的创建语句
-- 获得存储过程创建语句 select o.xtype,o.name,cm.text from syscomments cm inner join sysobjects o on o.id=cm.i ...
- phpmyadmin查看创建表的SQL语句
本人菜鸟 发现创建表的SQL语句还不会 直接phpmyadmin解决的 查看见表的语句除了直接到处SQL格式文件 打开查看外 就是执行语句查询 语句:show create table 表名 貌似大 ...
- (喷血分享)利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句
(喷血分享)利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句 在我们RDIFramework.NET代码生成器中,有这样一个应用,就是通过数据库表自动生成表的CREA ...
随机推荐
- BZOJ 1833: [ZJOI2010]count 数字计数( dp )
dp(i, j, k)表示共i位, 最高位是j, 数字k出现次数. 预处理出来. 差分答案, 对于0~x的答案, 从低位到高位进行讨论 -------------------------------- ...
- 面向对象程序设计-C++ Type conversion (Static) & Inheritance & Composition【第十二次上课笔记】
这节课继续讲解了 static 作为静态数据成员 / 成员函数的用法 具体详解我都已注释出来了,大家可以慢慢看 有任何问题都可以在这篇文章下留言我会及时解答 :) //static 静态数据成员 // ...
- USACO Runaround Numbers 模拟
根据题意的 Runaround 规则去找比当前数大的最近的一个 Runaround数字 模拟题~ Source code: /* ID: wushuai2 PROG: runround LANG: C ...
- Struts 2 OGNL
1.什么是OGNL? 2.Struts 2 OGNL 表达式 ====================== 华丽丽的分割线 ====================== 1.什么是OG ...
- Java字符串排序中文+数字
编写日期: 2013年9月15日 另一中解法:点击查看 解决思路: 在Java中,排序需要复写的是 equals 方法 和 Comparable<T> 接口 的public int com ...
- Codeforces 435B. Pasha Maximizes
简单贪心.... B. Pasha Maximizes time limit per test 1 second memory limit per test 256 megabytes input s ...
- XML(三)
使用 XSLT 显示 XML -------------------------------------------------------------------------------- 通 ...
- DH11数字温湿度传感器
DH11数字温湿度传感器是一种集温度.湿度一体的复合传感器,它能把温度和湿度物理量通过温.湿度敏感元件和相应电路转化成方便计算机.PLC.智能仪表等数据采集设备直接读取的数字量.DHT11由电阻式感湿 ...
- log4cpp的初步使用
(1)下载log4cpp的工程,编译生成lib文件和dll库 下载路径为:http://sourceforge.net/projects/log4cpp/files/latest/download 如 ...
- BZOJ 3631: [JLOI2014]松鼠的新家( 树链剖分 )
裸树链剖分... ------------------------------------------------------------------- #include<bits/stdc++ ...