您的位置:首页 > 其它

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

2013-05-25 19:47 302 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐