环境介绍
Windows764位+SQLServer2012
SQLServer版本细节
MicrosoftSQLServer2012-11.0.2100.60(X64)
Feb10201219:39:15
Copyright(c)MicrosoftCorporation
EnterpriseEdition:Core-basedLicensing(64-bit)onWindowsNT6.1(Build7601:ServicePack1)
实现功能
显示某张表的详细信息,类似选中表,然后点击设计出现的结果,如图:
具体实现
IFEXISTS(SELECT*fromtempdb..sysobjectsWHEREid=object_id(N'tempdb..#temp')andtype='U')
--判断临时表是否存在
DROPTABLE#temp;
ELSE
--创建临时表
CREATETABLE#temp
(
TABLE_QUALIFIERsysname,
TABLE_OWNERsysname,
TABLE_NAMEsysname,
COLUMN_NAMEsysname,
DATA_TYPEsmallint,
TYPE_NAMEsysname,
PRECISIONint,
LENGTHint,
SCALEsmallint,
RADIXsmallint,
NULLABLEsmallint,
REMARKSvarchar(254),
COLUMN_DEFnvarchar(4000),
SQL_DATA_TYPEsmallint,
SQL_DATETIME_SUBsmallint,
CHAR_OCTET_LENGTHint,
ORDINAL_POSITIONint,
IS_NULLABLEvarchar(254),
SS_DATA_TYPEtinyint,
);
GO
--将存储过程的结果存入临时表,Puzzle为表名
INSERTINTO#tempEXECsp_columnsPuzzle;
GO
--获得结果,并作格式优化
SELECTCOLUMN_NAMEAS[列名],TYPE_NAME+'('+CAST(PRECISIONASVARCHAR)+')'AS[数据类型],CASEWHENNULLABLE=1THEN'允许'ELSE'不允许'ENDAS[允许NULL值]FROM#temp;
GO
小结
个人认为这种查看表结构的方法意义不大。但有这种需求,就试着做了下。其中有几个细节可以借鉴。第一是临时表的创建,使用了vim进行格式处理;第二是可以将存储过程返回的结果存入到表;第三是格式上CAST的用法和CASE…WHEN的用法。
该贴被Robin编辑于2014-4-11 13:38:50该贴由hui.chen转至本版2014-11-5 16:22:25