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

本文介绍了一个SQL Server的存储过程,用于查询指定表的所有列及其数据类型。该存储过程能够显示每列的数据类型,并对字符类型的字段显示其最大长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值