SQL Server存储过程类型:插入,删除,更新或选择

时间:2018-11-05 16:34:33

标签: sql sql-server stored-procedures sql-server-2012

我正在sys.procedures的SQL Server 2012上进行一些查询,在这里我可以从数据库中查看所有存储过程。

SELECT * FROM SYS.PROCEDURES

我在上找到了一些定义

SELECT * FROM SYS.SQL_MODULES

sys表上是否有任何列,或者告诉我存储过程是否为类型的信息:选择,插入,删除或更新?

4 个答案:

答案 0 :(得分:1)

要回答您的问题,没有其他人提到的第一列,但是您可能可以使用类似的内容为您提供一个大概的想法……这也不是100%正确的< / p>

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

答案 1 :(得分:0)

不是一列。因为您的过程可以完成所有这些事情,所以尝试创建一个满足该需求的列是没有用的。但是您可以将这些条件放入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%';

答案 2 :(得分:0)

元数据中没有任何内容可以告诉您存储过程的功能。 存储过程没有“类型”,单个存储过程可以在同一过程中多次插入,更新,删除和选择所有

如果您对这些内容感兴趣,我建议命名该过程以包括元数据,例如InsertSalesRecord或DeleteMonthlyInventory

答案 3 :(得分:0)

不。存储过程可以保存许多插入,更新,删除或选择语句。它甚至可以只加两个数字而无需任何数据库操作。