См. Мой предыдущий вопрос, что я все еще застрял. Insert statement with sub queriesПодзапрос возвратил более 1 значения в SQL SErver 2008
У меня есть 4 колонки мне нужно обратиться, и я не могу удалить таблицу, чтобы изменить 4-й столбец из междунар не нуль в
я был направлен от этого первоначального заявления:
INSERT into ADVNET.dbo.KenCatItemTest
(categoryitemid,itemid,categoryid)
SELECT NEWID(),itemid,'0FCA508F-7EB5-4C2E-8803-DE688C4126E5'
FROM janel.dbo.item
WHERE janel.dbo.item.itemnumber like 'c-%' and listprice > 0
и он вызывает ошибку:
Невозможно вставить значение NULL в столбец «LineSequence», таблицу «ADVNET.dbo.KenCatItemTest»; столбец не допускает нулей. INSERT терпит неудачу. Заявление было прекращено.
Так что теперь я смотрю на это заявление вместо:
DECLARE @CategoryItemId uniqueidentifier;
SET @CategoryItemId = NEWID();
DECLARE @ItemID uniqueidentifier;
SET @ItemId = (select itemid from janel.dbo.item
WHERE janel.dbo.item.itemnumber like 'c-%' and listprice > 0);
DECLARE @CategoryID uniqueidentifier;
SET @CategoryID = '0FCA508F-7EB5-4C2E-8803-DE688C4126E5';
DECLARE @LineSequence int;
SELECT @LineSequence = ISNULL(MAX(LineSequence),0) + 1
FROM KenCatItemTest WHERE CategoryId = @CategoryId;
INSERT INTO ADVNET.dbo.KenCatItemTest
(CategoryItemId, ItemId, CategoryId, LineSequence)
VALUES (@CategoryItemId, @ItemId, @CategoryId, @LineSequence)
это новое заявление бросает ошибку:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. Msg 515, Level 16, State 2, Line 5 Cannot insert the value NULL into column 'ItemId', table 'ADVNET.dbo.KenCatItemTest'; column does not allow nulls. INSERT fails. The statement has been terminated.
спасибо @ Джейсон-Фолкнер. но как я могу выполнить задачу переноса всех записей и создания всех строк? Возможно, я не должен использовать скалярные переменные? – KenSummersNJ
@KEN - Простой способ - использовать «CURSOR». https://msdn.microsoft.com/en-us/library/ms180169.aspx –
Нет необходимости в том, чтобы курсор делал вставки. Я не вижу ничего в коде из OP, который предполагает, что требуется какой-либо цикл. –