SQL SERVER 获取对象(存储过程、函数等)参数信息

 

CREATE PROCEDURE [Common].[ProcLoadFunctionParameters]

    @inObjectName sysname

AS

    BEGIN

        SELECT  sp.object_id AS FunctionId ,

                sp.name AS FunctionName ,

(CASE WHEN param.is_output = 1 THEN 'OUTPUT' ELSE 'IN' END) AS ParamType,

                ISNULL(param.name, '') AS ParamName ,

                ISNULL(usrt.name, '') AS [DataType] ,

                ISNULL(baset.name, '') AS [SystemType] ,

                CAST(CASE WHEN baset.name IS NULL THEN 0

                          WHEN baset.name IN ( 'nchar', 'nvarchar' )

                               AND param.max_length <> -1

                          THEN param.max_length / 2

                          ELSE param.max_length

                     END AS INT) AS [Length] ,

                ISNULL(parameter_id, 0) AS SortId,

'' AS ParamReamrk 

        FROM    sys.objects AS sp

                INNER JOIN sys.schemas b ON sp.schema_id = b.schema_id

                LEFT OUTER JOIN sys.all_parameters AS param ON param.object_id = sp.object_id

                LEFT OUTER JOIN sys.types AS usrt ON usrt.user_type_id = param.user_type_id

                LEFT OUTER JOIN sys.types AS baset ON ( baset.user_type_id = param.system_type_id

                                                        AND baset.user_type_id = baset.system_type_id

                                                      )

                                                      OR ( ( baset.system_type_id = param.system_type_id )

                                                           AND ( baset.user_type_id = param.user_type_id )

                                                           AND ( baset.is_user_defined = 0 )

                                                           AND ( baset.is_assembly_type = 1 )

                                                         )

                LEFT OUTER JOIN sys.extended_properties E ON sp.object_id = E.major_id

        WHERE   sp.object_id = OBJECT_ID(@inObjectName)

                AND sp.type IN ( 'FN', 'IF', 'TF', 'P' )

                AND ISNULL(sp.is_ms_shipped, 0) = 0

                AND ISNULL(E.name, '') <> 'microsoft_database_tools_support'

        ORDER BY sp.name ,

                param.parameter_id ASC;

    END;

 

GO

转载于:https://www.cnblogs.com/pgboy/p/5496544.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值