Re[2]: Подсобите с триггером?
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 16.07.09 12:50
Оценка: 4 (1)
Здравствуйте, Grog13, Вы писали:

G>Конкретные трудности у меня с переводом строки вида "30003, 344034, 234234"

G>в 3 отдельных числа, что бы сделать 3 раза INSERT.

G>Могу ли я как-нибудь написать логику триггера на C#?


Во-первых, кажется вот здесь Массивы и списки в sql такой вопрос среди прочих и рассматривается.

Во-вторых, можно написать незамысловатый код на tsql для парсинга строки. Вот мой случай,правда некогда переименовывать переменные — смысл в том что в процедуру приходит строка @требованияКМашине, где отдельные коды перечислены через ';'. Можете видоизменить для вашего случая.

declare @кодТребования int;
declare @позицияТЗП int
while(len(@требованияКМашине)>0)
begin
   set @позицияТЗП =    charindex(';',@требованияКМашине);

   if (@позицияТЗП = 0)
       set @позицияТЗП = len(@требованияКМашине)+1

   if(isnumeric(substring(@требованияКМашине, 1, @позицияТЗП-1))=1)
   begin
    set @кодТребования = substring(@требованияКМашине, 1, @позицияТЗП-1)

    exec Вставить_заказы_требования_рабочая @кодЗаказа = @кодЗаказа, @кодТребования = @кодТребования
   end
   else
     set @кодТребования = null;

  if @позицияТЗП<len(@требованияКМашине)
      set @требованияКМашине = substring(@требованияКМашине, @позицияТЗП+1,len(@требованияКМашине)-@позицияТЗП);
  else 
       break;
end



Ну, а в третьих — на C# собственно парсинг строки делается вызовом одного метода String, но геморроя с вызовом sql потом из процедуры будет больше, поэтому я бы выбрал вариант на TSQL. И, кажется вы упоминали что сервер у вас 2000 — значит юзать CLR вы не можете
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.