灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3322回复:0

[SQL Server]分享:sp_type返回表结构字段类型及长度等

楼主#
更多 发布于:2013-05-28 13:22
分享:sp_type返回表结构字段类型及长度等
 
[sql]
USE [master]  
GO  
IF OBJECT_ID('sp_type','P') IS NOT NULL  
DROP  PROCEDURE [sp_type]  
GO  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
/************** object: sp_type    script_datetime: 2013-05-07 14:34:00****************/  
  
CREATE PROC sp_type (@tab NVARCHAR(128))  
AS  
/*  
作者:陈恩辉-弘恩  
说明:可以简单返回表的数据类型,对数据长度精度未做详细处理  
  
*/  
  
IF object_id(@tab, 'U') IS NULL  
BEGIN  
PRINT  '在数据库:'+ db_name() + ' 中,表:' + @tab + ' 不存在!'  
RETURN  
END  
DECLARE @sqlstr VARCHAR(MAX) ;  
SET @sqlstr = ' SELECT '  
    + STUFF(( SELECT    ',' + name + ' = ''' + type_name + ''''  
              FROM      ( SELECT    name ,  
                                    TYPE_NAME(system_type_id)  
                                    + CASE WHEN TYPE_NAME(system_type_id) LIKE '%char'  
                                           THEN '('  
                                                + CAST(CASE WHEN max_length < 0  
                                                            THEN 'max'  
                                                            ELSE max_length  
                                                       END AS VARCHAR) + ')'  
                                           ELSE ''  
                                      END type_name ,  
                                    column_id  
                          FROM      sys.columns  
                          WHERE     object_id = OBJECT_ID(@tab, 'U')  
                        ) t  
              ORDER BY  t.column_id  
            FOR  
              XML PATH('')  
            ), 1, 1, '')  
EXEC( @sqlstr )  
  
  
GO  
 EXEC sp_MS_marksystemobject '[sp_type]'  
GO

喜欢0 评分0
游客

返回顶部