"Kovalenko Dmitry" ...
>
> Horsun Vlad писал(а):
>
> > > Мне нужно получать RowsAffected только для
> > > INSERT/UPDATE/DELETE
> >
> > Я бы сказал, что тебе нужно получать RowsAffected
> >
> > а) когда попросит юзер - тут нужно возвращать святую правду
> > и ничего кроме правды
>
> Ему можно сказать - нифига посчитать не
> могу (-1). Это лучше чем вернуть цифру,
> которая неизвестно что обозначает.
Нет. Лучше - вернуть ошибку\возбудить exception
> > б) когда ты за него делал аналог INSERT/UPDATE/DELETE - тут ты
> > знаешь, что ты собирался делать и возвращать нужно соответствующее
> > значение
> >
> > Что я упустил ?
>
> Я за него ни чего не делаю - я только
> смотрю, что он хочет сделать.
(1) запомним это
> Хочет сделать INSERT - я возвращаю число
> вставленных рядов
> UPDATE - число обновленных рядов
> DELETE - удаленных
Это - ок
> Что-то другое - возвращаю -1.
> > > Для остальных - алгоритм должен вернуть -1.
> > Это не понято
>
> Ага, а если процедура удалит 3 ряда,
> изменит 4 им вставит 5, то RowsAffected равный
> 12-ти тебе будет понятен.
Потому я и написал ниже, что
---
Для процедуры, вообще говоря, понятия абстрактного RowsAffected не существует.
---
> > > Старый алгоритм получает
> >
> > Не нравится
>
> Кому не нравится? В сети полно
> алгоритмов которые именно так и
> работают.
Это не повод копировать каку ;)
> > > Мы имеем модификацию алгоритма,
> > > который теперь кладет на тип запроса
> > > и складывает все три
> > > числа.
>
> > Зачем он их складывает ???
>
> А что ты с ними предлагаешь делать? В
Я предлагаю возвращать то, что просят. Если просят не пойми что,
то проблема в консерватории у :
а) того, кто просит
б) того, кто отвечает на такое
в) того, кто определил такой интерфейс
> буфере всегда приходят три числа - для
> insert / update / delete
Что спросишь, то и приходит. Вариантов вопросов 4, а не 3
#define isc_info_req_select_count 13
#define isc_info_req_insert_count 14
#define isc_info_req_update_count 15
#define isc_info_req_delete_count 16
> > Сервер -1 никогда не возвращает. Я вообще не понимаю -
> > откуда у тебя такое требование.
>
> Спецификация OLEDB - не смог определить
> RowsAffected - верни (-1)
Ок. Хотя это и не имеет отношения к нашему вопросу о FB :)
> > Считай правильно и никого не вводи в заблуждение. Для процедуры,
> > вообще говоря, понятия абстрактного RowsAffected не существует.
+1
;)
> > PS как вариант : если у тебя запрос вызывался в качестве INSERT,
> > возвращай клиенту кол-во вставленных строк и т.д.
>
> Я вот хотел сказать "Да елки моталки,
> приведи мне правильный код подсчета
> RowsAffected", но тут увидел твой PS
>
> Вопрос - кто мне скажет что запрос
> выполнился в качестве INSERT? Ваш сервер
> мне говорит, что это вовсе не INSERT (...
> RETURNING) - а вызов хранимой процедуры.
А ты и так знаешь, что юзер хотел - см. (1)
не надо на тип запроса с точки зрения сервера смотреть в данном случае...
--
Хорсун Влад
PS Мораль - возвращай 4 значения, когда просят абстрактно, и одно,
когда просят конкретно ;)