Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Trả về thông tin cột cho một thủ tục được lưu trữ trong SQL Server:sp_sproc_columns

Trong SQL Server, sp_sproc_columns thủ tục được lưu trữ hệ thống cho phép bạn lấy thông tin cột cho một thủ tục được lưu trữ nhất định hoặc chức năng do người dùng xác định trong hệ thống hiện tại.

Nó tương đương với SQLProcedureColumns trong ODBC.

Cú pháp

Cú pháp như sau:

sp_sproc_columns [[@procedure_name = ] 'name']   
    [ , [@procedure_owner = ] 'owner']   
    [ , [@procedure_qualifier = ] 'qualifier']   
    [ , [@column_name = ] 'column_name']  
    [ , [@ODBCVer = ] 'ODBCVer']  
    [ , [@fUsePattern = ] 'fUsePattern']

Tất cả các đối số là tùy chọn. Xem tài liệu của Microsoft để biết giải thích chi tiết về những điều này.

Ví dụ 1 - Chỉ định Không có Đối số

Bạn có thể thực hiện thủ tục được lưu trữ mà không cần cung cấp bất kỳ đối số nào. Như thế này:

EXEC sp_sproc_columns

Hoặc thậm chí như thế này:

sp_sproc_columns

Điều này trả về tất cả các thủ tục được lưu trữ và các chức năng do người dùng xác định trong cơ sở dữ liệu hiện tại. Khi tôi chạy điều đó với cơ sở dữ liệu mẫu WideWorldImporters, tôi nhận được 9077 hàng. Trong ví dụ tiếp theo, tôi sẽ thu hẹp nó xuống chỉ một.

Ví dụ 2 - Chỉ định Tất cả Đối số

Đây là giao diện nếu bạn bao gồm tất cả các đối số.

EXEC sp_sproc_columns 
  @procedure_name = 'GetCityUpdates',
  @procedure_owner = 'Integration',
  @procedure_qualifier = 'WideWorldImporters',
  @column_name = '@RETURN_VALUE',
  @ODBCVer = 2,
  @fUsePattern = 1;

Kết quả (sử dụng đầu ra dọc):

PROCEDURE_QUALIFIER | WideWorldImporters
PROCEDURE_OWNER     | Integration
PROCEDURE_NAME      | GetCityUpdates;1
COLUMN_NAME         | @RETURN_VALUE
COLUMN_TYPE         | 5
DATA_TYPE           | 4
TYPE_NAME           | int
PRECISION           | 10
LENGTH              | 4
SCALE               | 0
RADIX               | 10
NULLABLE            | 0
REMARKS             | NULL
COLUMN_DEF          | NULL
SQL_DATA_TYPE       | 4
SQL_DATETIME_SUB    | NULL
CHAR_OCTET_LENGTH   | NULL
ORDINAL_POSITION    | 0
IS_NULLABLE         | NO
SS_DATA_TYPE        | 56

Trong trường hợp này, tôi trả lại thông tin về giá trị trả lại của GetCityUpdates thủ tục được lưu trữ.

Ví dụ 3 - Chỉ Chỉ định Thủ tục được Lưu trữ (hoặc Chức năng)

Thay vì bao gồm tất cả các đối số, bạn có thể chỉ bao gồm tên của thủ tục được lưu trữ. Tuy nhiên, nếu bạn không chỉ định @column_name , làm điều này sẽ trả về một hàng cho mỗi cột.

Ngoài ra, bạn có thể làm cho mã của mình ngắn gọn hơn bằng cách bỏ qua tên đối số (tức là chỉ bao gồm giá trị của nó).

EXEC sp_sproc_columns GetCityUpdates;

Kết quả (sử dụng đầu ra dọc):

-[ RECORD 1 ]-------------------------
PROCEDURE_QUALIFIER | WideWorldImporters
PROCEDURE_OWNER     | Integration
PROCEDURE_NAME      | GetCityUpdates;1
COLUMN_NAME         | @RETURN_VALUE
COLUMN_TYPE         | 5
DATA_TYPE           | 4
TYPE_NAME           | int
PRECISION           | 10
LENGTH              | 4
SCALE               | 0
RADIX               | 10
NULLABLE            | 0
REMARKS             | NULL
COLUMN_DEF          | NULL
SQL_DATA_TYPE       | 4
SQL_DATETIME_SUB    | NULL
CHAR_OCTET_LENGTH   | NULL
ORDINAL_POSITION    | 0
IS_NULLABLE         | NO
SS_DATA_TYPE        | 56
-[ RECORD 2 ]-------------------------
PROCEDURE_QUALIFIER | WideWorldImporters
PROCEDURE_OWNER     | Integration
PROCEDURE_NAME      | GetCityUpdates;1
COLUMN_NAME         | @LastCutoff
COLUMN_TYPE         | 1
DATA_TYPE           | -9
TYPE_NAME           | datetime2
PRECISION           | 27
LENGTH              | 54
SCALE               | 7
RADIX               | NULL
NULLABLE            | 1
REMARKS             | NULL
COLUMN_DEF          | NULL
SQL_DATA_TYPE       | -9
SQL_DATETIME_SUB    | 3
CHAR_OCTET_LENGTH   | NULL
ORDINAL_POSITION    | 1
IS_NULLABLE         | YES
SS_DATA_TYPE        | 0
-[ RECORD 3 ]-------------------------
PROCEDURE_QUALIFIER | WideWorldImporters
PROCEDURE_OWNER     | Integration
PROCEDURE_NAME      | GetCityUpdates;1
COLUMN_NAME         | @NewCutoff
COLUMN_TYPE         | 1
DATA_TYPE           | -9
TYPE_NAME           | datetime2
PRECISION           | 27
LENGTH              | 54
SCALE               | 7
RADIX               | NULL
NULLABLE            | 1
REMARKS             | NULL
COLUMN_DEF          | NULL
SQL_DATA_TYPE       | -9
SQL_DATETIME_SUB    | 3
CHAR_OCTET_LENGTH   | NULL
ORDINAL_POSITION    | 2
IS_NULLABLE         | YES
SS_DATA_TYPE        | 0

Ví dụ 4 - Các biến thể khác

Bạn có thể cung cấp bất kỳ biến thể nào của các đối số để chỉ trả về thông tin bạn yêu cầu.

Ví dụ:bạn có thể trả lại tất cả thông tin từ một chủ sở hữu thủ tục cụ thể:

EXEC sp_sproc_columns @procedure_owner = 'Integration'

Hoặc bạn có thể nhận thông tin về tất cả các giá trị trả về từ tất cả các thủ tục và các hàm do người dùng xác định:

EXEC sp_sproc_columns @column_name = '@RETURN_VALUE'

Tất nhiên, bạn luôn có thể bao gồm bộ định lượng thủ tục nếu bạn muốn. Trong SQL Server, tham số này đại diện cho tên cơ sở dữ liệu. Trong một số sản phẩm, nó đại diện cho tên máy chủ của môi trường cơ sở dữ liệu của bảng.

EXEC sp_sproc_columns 
  @column_name = '@RETURN_VALUE',
  @procedure_qualifier = 'WideWorldImporters';

Ví dụ 5 - Các ký tự đại diện

@fUsePattern đối số cho phép bạn chỉ định xem có gạch dưới hay không (_ ), phần trăm (% ) và dấu ngoặc ([ ] ) ký tự được hiểu là ký tự đại diện.

Ví dụ:chạy đoạn mã sau sẽ trả về tất cả các thủ tục và hàm do người dùng xác định bắt đầu bằng Get .

EXEC sp_sproc_columns 
  @procedure_name = 'Get%',
  @fUsePattern = 1;

Vì vậy, trong trường hợp của tôi, các thủ tục được trả lại này như GetCityUpdates, GetCustomerUpdates, GetMovementUpdates, v.v.

Nếu tôi tắt các ký tự đại diện:

EXEC sp_sproc_columns 
  @procedure_name = 'Get%',
  @fUsePattern = 0;

Tôi không nhận được kết quả.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giới thiệu về Từ đồng nghĩa trong SQL Server

  2. Nội bộ của bảy loại máy chủ SQL - Phần 2

  3. Chuyển đổi hàng thành cột bằng cách sử dụng 'Pivot' trong SQL Server

  4. Hiệu suất máy chủ SQL TOP IO Truy vấn -1

  5. Làm cách nào để chỉnh sửa nhanh các giá trị trong bảng trong SQL Server Management Studio?