Я пробовал различные варианты следующего запроса, но я не могу понять, что не могу получить определение хранимой процедуры из обычного ADO.NET
declare @procName varchar(100) = 'spGetMerchantSDR'
declare @Def varchar(max)
if OBJECT_ID('tempdb..#temp') is not null
drop table #temp
select @Def = m.[definition]
from sys.procedures p
inner join sys.sql_modules m on p.object_id = m.object_id
where p.name = @procName
select @Def as ProcText
Фрагмент программы
using (var con = new SqlConnection(neededString))
{
con.Open();
using (var cmd = new SqlCommand(CmdText, con))
{
cmd.CommandType = CommandType.Text;
using (var rdr = cmd.ExecuteReader())
{
if (rdr.Read())
{
item.Definition = rdr["ProcText"].ToString();
}
}
}
}
Когда я запускаю запрос в SSMS, я получаю ожидаемый результат.Если я изменю запрос, чтобы вернуть все из sys.sql_modules
, я могу получить значения для таких вещей, как object_id
, но каждый раз из C # определение возвращается в виде пустой строки.Когда я запускаю его в SSMS, я получаю ожидаемый результат.
Есть идеи?