Хранимая процедура 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 когда вы закончите.

Если есть лучший способ, я бы тоже хотел знать!

Другие вопросы по тегам