Как поразмышлять о sps и функциях SQL Server с использованием таблиц sys? - PullRequest
0 голосов
/ 17 февраля 2010

Где искать в системных таблицах Microsoft SQL Server информацию о параметрах, которые принимает встроенная хранимая процедура или функция?

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Похоже, что соединение с sys.system_objects и sys.system_paramters сделает это. Это должно помочь вам начать:

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

Сбросьте с интересующими вас столбцами, и все будет хорошо.

Сделать левое внешнее объединение для выбора объектов без параметров.

0 голосов
/ 18 февраля 2010

Вот 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...