Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Върнете информация за колона за съхранена процедура в SQL Server:sp_sproc_columns

В 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;

Нямам резултати.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MAX срещу Топ 1 - кое е по-добро?

  2. Изпълнява ли се EXCEPT по-бързо от JOIN, когато колоните на таблицата са еднакви

  3. Актуализиране на стъпка на задание за задача на агент на SQL Server (T-SQL)

  4. Връщане на процент от набор от резултати в SQL Server

  5. Екраниране на низ в SQL Server, така че да е безопасен за използване в израза LIKE