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’)
—————