我正在sys.procedures
的SQL Server 2012上进行一些查询,在这里我可以从数据库中查看所有存储过程。
SELECT * FROM SYS.PROCEDURES
我在上找到了一些定义
SELECT * FROM SYS.SQL_MODULES
sys表上是否有任何列,或者告诉我存储过程是否为类型的信息:选择,插入,删除或更新?
答案 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)
不。存储过程可以保存许多插入,更新,删除或选择语句。它甚至可以只加两个数字而无需任何数据库操作。