Могу ли я запросить параметры и «выбранные» имена столбцов из хранимой процедуры? - PullRequest
1 голос
/ 20 февраля 2009

Я пытаюсь написать собственный генератор кода, который может анализировать хранимые процедуры. Я написал несколько регулярных выражений, но они, кажется, не работают все время. У меня есть доступ к базе данных; существует ли системный запрос, который будет возвращать необходимые параметры и возможные возвращаемые значения? Я поиграл с sp_depends, но, похоже, он не содержит параметров. Существуют ли другие системные процедуры, которые могут быть полезны для этого? ... я пытаюсь это неправильно?

Ответы [ 3 ]

1 голос
/ 04 марта 2009

Вы можете получить параметры от

select c.* 
from syscolumns c
inner join sysobjects o on o.id = c.id 
where o.type = 'P' and o.name = '<storedProcName>'

Возвращать значения, как говорит Марк, сложно. Вы могли бы иметь

if (...)
     select * from Customers
else
     select * from CustomerOrders

так что, там не будет большого успеха. Конечно, я не знаю, какой человек напишет что-то подобное выше или почему, но это возможно, так что ...

0 голосов
/ 20 февраля 2009

Параметры должны быть доступны в таблицах метаданных (кажется, я помню, что они могут быть даже в syscolumns против object_id процедуры). Или инфо-схемы .

Однако результаты более сложны, так как SP не имеют очень формального вывода. UDF имеют гораздо более сильные метаданные. Лучшее, что вы можете сделать с SP (и он все еще нажимается и ударить) - это SET FMT_ONLY ON, и выполнять его и надеяться, что он не использует никаких расширенных хранимых процедур ...

0 голосов
/ 20 февраля 2009

sp_help может предоставить параметры для хранимых процедур (вместе с их типами данных)

...