簡體   English   中英

SQL Server存儲過程類型:插入,刪除,更新或選擇

[英]SQL Server stored procedure type: Insert, Delete, Update, or Select

我正在sys.procedures上對SQL Server 2012進行一些查詢, sys.procedures可以查看數據庫中的所有存儲過程。

SELECT * FROM SYS.PROCEDURES

我發現了一些定義

SELECT * FROM SYS.SQL_MODULES

sys表上是否有任何列,或者什么告訴我該存儲過程是否是一種類型:選擇,插入,刪除或更新?

要回答您的問題,沒有,沒有一欄讓您知道其他人提到的內容,但是您可能可以使用類似的內容給您一個大概的想法……同樣,這也不是100%正確的

select sm.definition,
CASE WHEN
    sm.definition like '%SELECT%' THEN 1 ELSE 0
    END AS 'HasSelect',
CASE WHEN
    sm.definition like '%Insert into%' THEN 1 ELSE 0
    END AS 'HasInsert',
    CASE WHEN
    sm.definition like '%UPDATE TABLE%' THEN 1 ELSE 0
    END AS 'HasUpdate',
    CASE WHEN
    sm.definition like '%DELETE FROM%' THEN 1 ELSE 0
    END AS 'HasDelete',
        CASE WHEN
    sm.definition like '%Drop%' THEN 1 ELSE 0
    END AS 'HasDrop'
FROM sys.procedures p
INNER JOIN sys.sql_modules sm
ON p.object_id = sm.object_id

沒有專欄。 因為您的過程可以完成所有這些事情,所以嘗試創建一個滿足該需求的列是沒有用的。 但是您可以將這些條件放入WHERE子句中。

SELECT DISTINCT
       o.name AS Object_Name,
       o.type_desc
  FROM sys.sql_modules m
  JOIN sys.objects o ON m.object_id = o.object_id
 WHERE o.name Like '%INSERT%'
    OR o.name Like '%SELECT%';

元數據中沒有任何內容可以告訴您存儲過程的功能。 存儲過程沒有“類型”,單個存儲過程可以在同一過程中多次插入,更新,刪除和選擇所有內容

如果您對這些內容感興趣,建議您命名該過程以包含元數據,例如InsertSalesRecord或DeleteMonthlyInventory

不能。存儲過程可以容納許多插入,更新,刪除或選擇語句。 它甚至可以只添加兩個數字而無需任何數據庫操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM