zoukankan      html  css  js  c++  java
  • 查询存储过程的参数信息的SQL语句[经过测试]

    测试环境:SQL SERVER 2005

    SQL语句


    declare @SchemaName nvarchar(50)
    set @SchemaName='构架名称,如DBO'
    declare @CommandName nvarchar(50)
    set @CommandName='存储过程名称'

    SELECT
                    
    DB_NAME() AS [PROCEDURE_CATALOG],
                    
    @SchemaName AS [PROCEDURE_SCHEMA],
                    
    NULL AS [PROCEDURE_NAME],
                    
    '@RETURN_VALUE' AS [PARAMETER_NAME],
                    
    0 AS [ORDINAL_POSITION],
                    
    CAST(4 AS smallintAS [PARAMETER_TYPE],
                    
    0 AS [PARAMETER_HASDEFAULT],
                    
    NULL AS [PARAMETER_DEFAULT],
                    
    CAST(0 AS bitAS [IS_NULLABLE],
                    
    0 AS [DATA_TYPE],
                    
    NULL AS [CHARACTER_MAXIMUM_LENGTH],
                    
    NULL AS [CHARACTER_OCTET_LENGTH],
                    
    CAST(10 AS smallintAS [NUMERIC_PRECISION],
                    
    CAST(NULL AS smallintAS [NUMERIC_SCALE],
                    
    NULL AS [DESCRIPTION],
                    
    'int' AS [TYPE_NAME],
                    
    'int' AS [LOCAL_TYPE_NAME]
                
    UNION ALL
                
    SELECT
                    
    DB_NAME() AS [PROCEDURE_CATALOG],
                    SCHEMA_NAME(sp.schema_id) 
    AS [PROCEDURE_SCHEMA],
                    
    NULL AS [PROCEDURE_NAME],
                    param.name 
    AS [PARAMETER_NAME],
                    param.parameter_id 
    AS [ORDINAL_POSITION],
                    
    CAST(CASE WHEN param.is_output = 1 THEN 2 ELSE 1 END AS smallintAS [PARAMETER_TYPE],
                    
    0 AS [PARAMETER_HASDEFAULT],
                    
    NULL AS [PARAMETER_DEFAULT],
                    
    CAST(1 AS bitAS [IS_NULLABLE],
                    
    0 AS [DATA_TYPE],
                    
    CAST(CASE WHEN baset.name IN (N'nchar', N'nvarchar'AND param.max_length <> -1 THEN param.max_length/2 ELSE param.max_length END AS intAS [CHARACTER_MAXIMUM_LENGTH],
                    
    NULL AS [CHARACTER_OCTET_LENGTH],
                    
    CAST(param.precision AS smallintAS [NUMERIC_PRECISION],
                    
    CAST(param.scale AS smallintAS [NUMERIC_SCALE],
                    
    NULL AS [DESCRIPTION],
                    
    ISNULL(baset.name, N''AS [TYPE_NAME],
                    
    ISNULL(baset.name, N''AS [LOCAL_TYPE_NAME]
                
    FROM
                    sys.all_objects 
    AS sp
                    
    INNER JOIN sys.all_parameters AS param ON param.object_id=sp.object_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
                
    WHERE
                    (sp.type 
    = N'P' OR sp.type = N'RF' OR sp.type='PC')and(sp.name=@CommandName and SCHEMA_NAME(sp.schema_id)=@SchemaName)
                
    ORDER BY
                    
    5 ASC
    修改架构名称和存储过程名称后执行结果类似
    ETMCDB dbo NULL @RETURN_VALUE 0 4 0 NULL 0 0 NULL NULL 10 NULL NULL int int
    ETMCDB dbo NULL @OrderId 1 1 0 NULL 1 0 4 NULL 10 0 NULL int int
    ETMCDB dbo NULL @DetailId 2 1 0 NULL 1 0 4 NULL 10 0 NULL int int
    内容摘自


    ------------------------------------------
    除非特别声明,文章均为原创,版权与博客园共有,转载请保留出处
    BUY ME COFFEE
  • 相关阅读:
    [UVA 10603]Fill
    [BZOJ 4152][AMPPZ 2014]The Captain
    P4779单源最短路径(标准版)
    P3372 线段树模版1
    P1776宝物筛选
    最长上升子序列模版
    01背包问题
    SHOI2008 汉诺塔
    log P1080国王游戏
    最小生成树模版 Kruskal
  • 原文地址:https://www.cnblogs.com/kkun/p/1384381.html
Copyright © 2011-2022 走看看