У меня есть запрос sql
, который проверяет существование некоторых записей, если эти записи существуют, возникает ошибка для них, иначе вставьте их в базу данных.В моем запросе, так как мне нужно возвращать сообщения об ошибках для каждой записи, мне нужно выбрать несколько пользовательских текстов, проблема в том, что они отображаются в виде отдельных таблиц, а не в одной таблице, которую я хочу (так как я вызываю этот запрос из приложения nodejs)и он возвращает массив для меня, поэтому он возвращает только первую таблицу (сообщение об ошибке) для меня).
Я искал и достигаю этих двух вариантов:
1- Используйте UNION
(что не решает моюcase)
2- Вставить все записи в другую таблицу и затем получить все ее записи (что не красиво! :))
DECLARE @errorCOUNT int
SET @errorCOUNT = 0
BEGIN TRANSACTION [Tran1]
IF EXISTS (SELECT * FROM Categories WHERE CategoryName = 'myCat1')
BEGIN
SELECT 'This is error for is = 4' As err
SET @errorCOUNT = @errorCOUNT + 1
END
ELSE
BEGIN
INSERT INTO Categories VALUES ('myCat1')
END
----------------------------
IF EXISTS (SELECT * FROM Categories WHERE CategoryName = 'myCat2')
BEGIN
SELECT 'This is error for is = 5' AS err
SET @errorCOUNT = @errorCOUNT + 1
END
ELSE
BEGIN
INSERT INTO Categories VALUES ('myCat2')
END
----------------------------
IF @errorCOUNT > 0
BEGIN
ROLLBACK TRANSACTION [Tran1]
END
ELSE
BEGIN
COMMIT TRANSACTION [Tran1]
END
Как я уже говорил, я хочу, чтобы все эти операторы select
были показаны в одной таблице, чтобы они возвращались на мой сервер в виде одного массива.
Я просто думаю, что хорошо упомянуть, что мой запрос завершается в цикле, поэтомуон может иметь различное количество IF...ELSE
(между ---
строками).
Надеюсь, я все понял.Заранее спасибо.