Подтвердить что ты не робот

Найти хранимую процедуру по имени

Можно ли найти в хранимой процедуре SQL Server Management Studio по имени или по имени? (в контексте активной базы данных)

Спасибо за помощь

4b9b3361

Ответ 1

Вы можете использовать:

select * 
from 
   sys.procedures 
where 
   name like '%name_of_proc%'

если вам нужен код, который вы можете посмотреть в таблице syscomments

select text 
from 
    syscomments c
    inner join sys.procedures p on p.object_id = c.object_id
where 
    p.name like '%name_of_proc%'

Изменить обновление:

вы также можете использовать стандартную версию ansi

SELECT * 
FROM 
    INFORMATION_SCHEMA.ROUTINES 
WHERE 
    ROUTINE_NAME LIKE '%name_of_proc%'

Ответ 2

Предполагая, что вы находитесь в разделе "Сведения об объекте" (F7), в котором отображается список хранимых процедур, нажмите кнопку "Фильтры" и введите имя (или частичное имя).

alt text

Ответ 3

Это будет работать и для таблиц и представлений (помимо прочего), а не только для sprocs:

SELECT
    '[' + s.name + '].[' + o.Name + ']',
    o.type_desc
FROM
    sys.objects o
    JOIN sys.schemas s ON s.schema_id = o.schema_id
WHERE
    o.name = 'CreateAllTheThings' -- if you are certain of the exact name
    OR o.name LIKE '%CreateAllThe%' -- if you are not so certain

Он также дает вам имя схемы, которое будет полезно в любой нетривиальной базе данных (например, где вам нужен запрос, чтобы найти хранимую процедуру по имени).

Ответ 4

Очень аккуратный трюк Я наткнулся на попытку какой-либо инъекции SQL, в проводнике объектов в окне поиска просто используйте ваши процентные символы, и это будет искать ВСЕ хранимые процедуры, функции, представления, таблицы, схемы, индексы... Я устал думая больше:)

шаблон поиска

Ответ 5

Вы можете использовать этот запрос:

SELECT 
    ROUTINE_CATALOG AS DatabaseName ,
    ROUTINE_SCHEMA AS SchemaName,
    SPECIFIC_NAME AS SPName ,
    ROUTINE_DEFINITION AS SPBody ,
    CREATED AS CreatedDate,
    LAST_ALTERED AS LastModificationDate
FROM INFORMATION_SCHEMA.ROUTINES
WHERE 
    (ROUTINE_DEFINITION LIKE '%%')
    AND 
    (ROUTINE_TYPE='PROCEDURE')
    AND
    (SPECIFIC_NAME LIKE '%AssessmentToolDegreeDel')

Как вы можете видеть, вы также можете выполнять поиск внутри тела хранимой процедуры.