INFORMATION SCHEMA ROUTINE_COLUMNS

CREATE VIEW INFORMATION_SCHEMA.ROUTINE_COLUMNS

AS

SELECT

db_name() AS TABLE_CATALOG,

schema_name(o.schema_id) AS TABLE_SCHEMA,

o.name AS TABLE_NAME,

c.name AS COLUMN_NAME,

c.column_id AS ORDINAL_POSITION,

convert(nvarchar(4000), null) AS COLUMN_DEFAULT,

convert(varchar(3),

CASE WHEN c.is_nullable = 1 THEN ‘YES’

ELSE ‘NO’ END) AS IS_NULLABLE,

type_name(c.system_type_id) AS DATA_TYPE,

ColumnProperty(c.object_id, c.name, ‘charmaxlen’) AS CHARACTER_MAXIMUM_LENGTH,

ColumnProperty(c.object_id, c.name, ‘octetmaxlen’) AS CHARACTER_OCTET_LENGTH,

convert(tinyint, CASE — int/decimal/numeric/real/float/money

WHEN c.system_type_id IN (48, 52, 56, 59, 60, 62, 106, 108, 122, 127) THEN c.precision

END) AS NUMERIC_PRECISION,

convert(smallint, CASE — int/money/decimal/numeric

WHEN c.system_type_id IN (48, 52, 56, 60, 106, 108, 122, 127) THEN 10

WHEN c.system_type_id IN (59, 62) THEN 2 END) AS NUMERIC_PRECISION_RADIX, — real/float

convert(int, CASE — datetime/smalldatetime

WHEN c.system_type_id IN (58, 61) THEN NULL

ELSE odbcscale(c.system_type_id, c.scale) END) AS NUMERIC_SCALE,

convert(smallint, CASE — datetime/smalldatetime

WHEN c.system_type_id IN (58, 61) THEN 3 END) AS DATETIME_PRECISION,

convert( sysname, null) AS CHARACTER_SET_CATALOG,

convert( sysname, null) AS CHARACTER_SET_SCHEMA,

convert( sysname, CASE

WHEN c.system_type_id IN (35, 167, 175) — char/varchar/text

THEN CollationProperty(c.collation_name, ’sqlcharsetname’)

WHEN c.system_type_id IN (99, 231, 239) — nchar/nvarchar/ntext

THEN N’UNICODE’ END) AS CHARACTER_SET_NAME,

convert(sysname, null) AS COLLATION_CATALOG,

convert(sysname, null) AS COLLATION_SCHEMA,

c.collation_name AS COLLATION_NAME,

convert(sysname,

CASE WHEN c.user_type_id > 256

THEN db_name() END) AS DOMAIN_CATALOG,

convert(sysname,

CASE WHEN c.user_type_id > 256 THEN

schema_name(o.schema_id) END) AS DOMAIN_SCHEMA,

convert(sysname,

CASE WHEN c.user_type_id > 256 THEN

type_name(c.user_type_id) END) AS DOMAIN_NAME

FROM

sys.objects o JOIN sys.columns c ON c.object_id = o.object_id

WHERE

o.type IN (’TF’,'IF’, ‘FT’)

—————

Post a Comment