Мне дали задание проверить, как предмет изменился и на какие субпродукты.Моя логика заключалась в следующем: я буду использовать функцию, чтобы проверить, какие субпродукты превратились в мой ресурс, и перезапускать функцию до тех пор, пока не будет создан субпродукт.Я хочу иметь временную таблицу для каждого субпродукта, который я искал (таким образом, не попадая в какой-то цикл), и другую временную таблицу, в которую я вставляю каждый продукт, найденный по моей функции.Функция повторится, используя первый товар, и после вставки сгенерированных товаров удалит верхний (тот, который используется моей функцией, таким образом, имея конечную точку, когда таблица опустошается).Я застрял, потому что я не могу найти рабочий способ сделать эту работу.Вот фрагмент моего кода.
Я попытался вставить туда, где не существует, но не смог сделать это правильно.
declare @item NVARCHAR(250)
declare @return NVARCHAR(250)
declare @resultstable TABLE ( [order] NVARCHAR(50),[return] NVARCHAR(50),[genItem] NVARCHAR(50),[BatchNo] NVARCHAR(50),[IsItem] NVARCHAR(50))
declare @tempSearch TABLE ( [Exists] NVARCHAR(50))
SET @item = -- my searching item
INSERT INTO @resultstable
SELECT *
FROM [dbo].[fuction] (@item)
INSERT INTO @tempSearch
SELECT TOP (1) [BatchNo] FROM @RESULTSTABLE
WHILE( (SELECT COUNT(*) FROM @resultstable)>0)
BEGIN
SET @return = (SELECT TOP(1) [return] FROM @resultstable)
----here is my problem in the if statement
IF(@return=(SELECT [Exists] FROM @resultstable WHERE [EXISTS] = @return ))
BEGIN
INSERT INTO @tempSearch
SELECT TOP (1) [return] FROM @resultstable
INSERT INTO @resultstable
SELECT *
FROM [dbo].[function] (@return)
DELETE TOP(1) FROM @resultstable
END
ELSE
BEGIN
DELETE TOP (1) FROM @resultstable
END
END
Ожидаемый результат должен быть 0в первой таблице Temp @resultstable из-за оператора удаления top.Для второй таблицы @tempSearch у меня должен быть любой предмет, который был найден в указанном порядке.В основном каждый элемент, используемый функцией, производит 3-6 субпродуктов.Помните, что процедура останавливается, когда моя функция выдает 0 результатов (не удалось найти сгенерированный продукт).Любая помощь будет в основном оценена, так как у меня нет большого опыта в SQL.