Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 如何使用sys表反映SQL Server SP和FUNC?_Tsql - Fatal编程技术网

Tsql 如何使用sys表反映SQL Server SP和FUNC?

Tsql 如何使用sys表反映SQL Server SP和FUNC?,tsql,Tsql,我应该在Microsoft SQL Server系统表中的何处查找有关内置存储过程或函数采用的参数的信息?看起来像是sys.system\u对象上的联接,sys.system\u参数将执行此操作。这应该让你开始: SELECT ob.object_id, ob.name, ob.is_ms_shipped, ob.type_desc, pa.* from sys.system_objects ob inner join sys.all_parameters pa on pa.obje

我应该在Microsoft SQL Server系统表中的何处查找有关内置存储过程或函数采用的参数的信息?

看起来像是sys.system\u对象上的联接,sys.system\u参数将执行此操作。这应该让你开始:

SELECT ob.object_id, ob.name, ob.is_ms_shipped, ob.type_desc, pa.*
 from sys.system_objects ob
  inner join sys.all_parameters pa
   on pa.object_id = ob.object_id
重新设置你感兴趣的列,你应该很好


将其设置为左外连接以拾取没有参数的对象。

下面是返回给定例程的参数信息的sql函数

    ALTER     Function [dbo].[ftRoutineSchema](@RoutineName varchar(200)) returns table as return 
--declare @routineName varchar(100);select @routineName='ftDetailsOfLogin'
SELECT   ColumnName=Case Is_Result
                                    When 'YES' then '@RC'
                                  else Parameter_Name
                            end
            ,DataType= case Data_Type
                            When  'DECIMAL' then 'Decimal('+convert(varchar,Numeric_precision)+','+Convert(varchar,Numeric_scale)+')'
                            When  'numeric' then 'Decimal('+convert(varchar,Numeric_precision)+','+Convert(varchar,Numeric_scale)+')'
                            when 'varchar' then 'Varchar('+Convert(varchar,Character_maximum_length)+')'
                            ELSE dATA_TYPE      
                          end
            ,ColumnOrder=Ordinal_Position   
            ,Direction =Case Parameter_Mode
                                when 'INOUT' then 'Out'
                                else Parameter_Mode
                            end

 FROM  --INFORMATION_SCHEMA.ROUTINE_cOLUMNS
         Information_schema.Parameters  
--WHERE TABLE_NAME=@routineName --order by columnorder
  Where Specific_name=@ROUTINEnAME

工作起来很有魅力。谢谢我使用WHERE子句过滤它。