एक कठिन शुरुआत कुछ इस तरह होगी:
CREATE FUNCTION udf_GetDataTypeAsString
(
@user_type_id INT ,
@Length INT
)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @ReturnStr VARCHAR(50)
IF @Length = -1
SELECT @ReturnStr = UPPER(name) + '(MAX)'
FROM sys.types
WHERE user_type_id = @user_type_id
ELSE
SELECT @ReturnStr = UPPER(name) + '(' + CONVERT(VARCHAR, @Length) + ')'
FROM sys.types
WHERE user_type_id = @user_type_id
RETURN @ReturnStr
END
GO
SELECT dbo.udf_GetDataTypeAsString(167, -1)
--#### Returns VARCHAR(MAX)
SELECT dbo.udf_GetDataTypeAsString(231, 24)
--#### Returns NVARCHAR(24)
ध्यान दें कि यह केवल चार डेटा प्रकारों के लिए वास्तव में अच्छा है और केवल लंबाई को संभालता है, यदि आप सटीक (दशमलव आदि) का उपयोग करना चाहते हैं तो आपको थोड़ा और तर्क लागू करना होगा
साथ ही, आप कुछ उपयोगकर्ता प्रकारों पर केवल -1 लंबाई की अनुमति देने के लिए सत्यापन जोड़ना चाह सकते हैं
(जिज्ञासा के लिए - आप ऐसा क्यों करना चाहते हैं?)