В SQL Server, sp_sproc_columns
системната запаметена процедура ви позволява да получите информация за колони за дадена съхранена процедура или дефинирана от потребителя функция в текущата система.
Това е еквивалентно на SQLProcedureColumns в ODBC.
Синтаксис
Синтаксисът е така:
sp_sproc_columns [[@procedure_name =] 'име'] [ , [@procedure_owner =] 'собственик'] [ , [@procedure_qualifier =] 'квалификатор'] [ , [@column_name =] 'колона, [име'] [име_колона'] @ODBCVer =] 'ODBCVer'] [ , [@fUsePattern =] 'fUsePattern']
Всички аргументи са незадължителни. Вижте документацията на Microsoft за подробно обяснение на тях.
Пример 1 – Посочете без аргументи
Можете да изпълните съхранената процедура, без да предоставяте никакви аргументи. Като това:
EXEC sp_sproc_columns
Или дори така:
sp_sproc_columns
Това връща всички съхранени процедури и дефинирани от потребителя функции в текущата база данни. Когато стартирам това срещу примерната база данни WideWorldImporters, получавам 9077 реда. В следващия пример ще го стесня само до един.
Пример 2 – Посочете всички аргументи
Ето как изглежда, ако включите всички аргументи.
EXEC sp_sproc_columns @procedure_name ='GetCityUpdates', @procedure_owner ='Интеграция', @procedure_qualifier ='WideWorldImporters', @column_name ='@RETURN_VALUE', @ODBCFU1 =2, @ODBCFU1 =2.Резултат (с помощта на вертикален изход):
PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | ИнтеграцияPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @RETURN_VALUECOLUMN_TYPE | 5DATA_TYPE | 4TYPE_NAME | intPRECISION | 10 ДЪЛЖИНА | 4 SCALE | 0RADIX | 10 С НУЛИРАНЕ | 0ЗАБЕЛЕЖКИ | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | 4SQL_DATETIME_SUB | NULLCHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 0IS_NULLABLE | NOSS_DATA_TYPE | 56В този случай връщам информация за върнатата стойност на GetCityUpdates съхранена процедура.
Пример 3 – Посочете само съхранената процедура (или функция)
Вместо да включвате всички аргументи, можете да включите само името на съхранената процедура. Ако обаче не посочите
@column_name
, това ще върне ред за всяка колона.Освен това можете да направите кода си по-сбит, като пропуснете името на аргумента (т.е. включвайки само неговата стойност).
EXEC sp_sproc_columns GetCityUpdates;Резултат (с помощта на вертикален изход):
-[ ЗАПИС 1 ]------------------------------PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | ИнтеграцияPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @RETURN_VALUECOLUMN_TYPE | 5DATA_TYPE | 4TYPE_NAME | intPRECISION | 10 ДЪЛЖИНА | 4 SCALE | 0RADIX | 10 С НУЛИРАНЕ | 0ЗАБЕЛЕЖКИ | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | 4SQL_DATETIME_SUB | NULLCHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 0IS_NULLABLE | NOSS_DATA_TYPE | 56-[ ЗАПИС 2 ]------------------------------PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | ИнтеграцияPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @LastCutoffCOLUMN_TYPE | 1DATA_TYPE | -9TYPE_NAME | datetime2PRECISION | 27 ДЪЛЖИНА | 54 МАЩАБ | 7RADIX | НУЛЕВА НУЛЕВА | 1 ЗАБЕЛЕЖКИ | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | -9SQL_DATETIME_SUB | 3CHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 1IS_NULLABLE | YESSS_DATA_TYPE | 0-[ ЗАПИС 3 ]------------------------------PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | ИнтеграцияPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @NewCutoffCOLUMN_TYPE | 1DATA_TYPE | -9TYPE_NAME | datetime2PRECISION | 27 ДЪЛЖИНА | 54 МАЩАБ | 7RADIX | НУЛЕВА НУЛЕВА | 1 ЗАБЕЛЕЖКИ | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | -9SQL_DATETIME_SUB | 3CHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 2IS_NULLABLE | YESSS_DATA_TYPE | 0Пример 4 – Други вариации
Можете да предоставите всяка вариация на аргументи, за да върнете само информацията, която ви е необходима.
Например, можете да върнете цялата информация от определен собственик на процедура:
EXEC sp_sproc_columns @procedure_owner ='Интеграция'Или можете да получите информация за всички върнати стойности от всички процедури и дефинирани от потребителя функции:
EXEC sp_sproc_columns @column_name ='@RETURN_VALUE'Разбира се, винаги можете да включите квалификатора на процедурата, ако желаете. В SQL Server този параметър представлява името на базата данни. В някои продукти той представлява името на сървъра на средата на базата данни на таблицата.
EXEC sp_sproc_columns @column_name ='@RETURN_VALUE', @procedure_qualifier ='WideWorldImporters';Пример 5 – заместващи знаци
@fUsePattern
Аргументът ви позволява да укажете дали долно подчертаване (_
), процент (%
) и скоба ([
]
) символите се интерпретират като заместващи знаци.Например, изпълнението на следния код ще върне всички процедури и дефинирани от потребителя функции, които започват с Get .
EXEC sp_sproc_columns @procedure_name ='Get%', @fUsePattern =1;Така че в моя случай това върна процедури като GetCityUpdates, GetCustomerUpdates, GetMovementUpdates и т.н.
Ако деактивирам заместващи знаци:
EXEC sp_sproc_columns @procedure_name ='Get%', @fUsePattern =0;Нямам резултати.