Хранимая процедура CLR - PullRequest
       30

Хранимая процедура CLR

0 голосов
/ 12 апреля 2011

Я хочу использовать 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 Ответ

0 голосов
/ 13 апреля 2011

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

// 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, когда закончите.

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

...