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 ...
随机推荐
- C#高级编程随笔
1.把类创作的变量叫做对象2.类就是对象的模版3.类定义了每个对象的数据和功能4.接口不能被实例化,抽象类不能被实例化5.抽象基类可以包含非抽象方法,而接口只能包含抽象方法6.一个类可以实现多个接口7 ...
- POJ1985 DFS【STL__vector_的应用】
vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacit ...
- Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactory
Error creating bean with name ‘org.springframework.validation.beanvalidation.LocalValidatorFactoryBe ...
- Cognos 图表用图片取代”没有数据显示”
在Cognos中做出来报表展示的时候因为没有数据感觉显示“没有可用数据”感觉很不美观.所以想用一张图片代替. 在图表的属性里面有一个“无数据内容”,点击打开之后有三个选项: 默认就是显示“没有可用数据 ...
- mojo 接口返回键值对的json格式
my $c = shift; use DBI; my %hash=(); my $dbUser='zabbix'; my $user="root"; my $passwd=&quo ...
- linux c 得到时间
ctime: 将时间和日期以字符串格式表示头文件: time.h函数定义: char *ctime(const time_t *timep); 应用举例:#include <stdio.h> ...
- hdu 2757 Ocean Currents(优先队列+bfs)
小伙伴们真心被这道题惊呆了!刚开始是读题,题目都把小伙伴惊呆了,题目都读不懂! 在前面猴子小伙伴的帮助下,理解了一点点,又偷偷的在纸上写写画画,明白了题意! 后来,你懂的,果断拿下!在拿下的过程也经过 ...
- ArrayList集合-[习题]--C#
:向集合中添加10个元素,计算平均值,求最大.最小值. ; list.AddRange(, , , , , , , , }); int Max, Min; Max = Min = (]; ; i &l ...
- 如何将UISearchBar上"Cancel"按钮改为”取消“?
别说话,直接上代码 for (id obj in [searchBar subviews]) { if ([obj isKindOfClass:[UIView class]]) { ...
- c,const和指针组合的几种意义
const和指针的组合: 注释部分表示非法. ; ; p=&a; //*p = 1 ; ; pp= &a; //*pp = 1; ; //pv=&a; *pv = ; ; // ...