Хранимая процедура CLR
Я хочу использовать Cryptography API в хранимой процедуре CLR.
Я создал хранимую процедуру CLR и написал оператор выбора
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Context Connection=true";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = @"select * from Employee";
SqlDataReader rdr = cmd.ExecuteReader();
Теперь я хочу отфильтровать результаты, используя номер сотрудника, который хранится в зашифрованном виде в базе данных, для которой я собираюсь использовать методы криптографии.
Теперь я застрял в том, как фильтровать записи из SqlDataReader
,
Я хочу вернуть формат как SqlDataReader
, так как для возврата нескольких записей из хранимой процедуры CLR есть один метод SqlContext.Pipe.Send()
и этот метод принимает только SqlDataReader
объекты.
Пожалуйста, ведите меня.
1 ответ
Я смотрю на похожую проблему, где я хочу сделать некоторые манипуляции перед возвратом результатов. Единственный способ, который я могу видеть на данный момент, это использовать:
// Note you need to pass an array of SqlMetaData objects to represent your columns
// to the constructor of SqlDataRecord
SqlDataRecord record = new SqlDataRecord();
// Use the Set methods on record to supply the values for the first row of data
SqlContext.Pipe.SendResultsStart(record);
// for each record you want to return
// use set methods on record to populate this row of data
SqlContext.Pipe.SendResultsRow(record);
Тогда позвони SqlContext.Pipe.SendResultsEnd
когда вы закончите.
Если есть лучший способ, я бы тоже хотел знать!