Цитата Написал: Denndy
Процесс сравнения останавливается вот такой ошибкой.
Ошибка говорит, что SQL-запрос выборки товара по бренду и артикулу возвращает более одной записи, а значит эта связка у вас не уникальна в каталоге, а потому вместо одного кода товара возвращается несколько.
Цитата
SELECT G_ID
FROM TBL_GOODS
WHERE G_B_ID = @B_ID
AND UPPER(G_SID) = UPPER(@SG_ARTIKUL)
Цитата Написал: Denndy
Можно внести в код дополнение что-бы сравнение останавливалось на ошибочной строке, что-бы видеть почему произошла ошибка?
Пользовательские sql-запросы на имеют обратной связи с интерфейсом, тем более данный запрос работает по всем товарам поставщика, а не по выделенным строкам в таблице. Если вам нужно получить информацию о проблемном товаре, то вариантов несколько:
1. Брать первый попавшийся найденный товар.
2. Добавить в SQL-запрос предварительное получение количества найденных товаров и выдавать нужное сообщение об ошибке с кодом товара или кодом товара поставщика, что в свою очередь замедлит поиск товаров. Более того, ситуация поиска товаров не типичная для базы данных, потому для большого количества товаров нужно добавить в таблицу товаров TBL_GOODS индекс по двум полям G_B_ID и G_SID (в версиях MSSQL 2005 и выше в индекс можно включить данные поля G_ID чтобы запрос поиска получал код товара в выборке прямо из индекса и не искал физическое расположение записи после индекса)
3. Добавить блок TRY...CATCH и выдавать нужное сообщение об ошибке (для MSSQL 2005 и выше)
4. Сделать экспорт в MSSQL товаров каталога которые дублируются по связке "Бренд + Артикул"
|