我有一個我需要遍歷的 id 串列,并在例如插入陳述句中使用
我在這里建了表:
DECLARE @ProductIds TABLE (ID nvarchar(1000))
INSERT INTO @ProductIds (ID)
SELECT ProductTypeId FROM ProductType
DECLARE MY_CURSOR CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY FOR
SELECT DISTINCT Id
FROM @ProductIds
OPEN MY_CURSOR
FETCH NEXT FROM MY_CURSOR INTO @ProductIds
WHILE @@FETCH_STATUS = 0
BEGIN
--each so basically each productId is used in the @ProductId parameter below
INSERT INTO myProducts (ProductTypeId, prodDesc, Value)
VALUES (@ProductId, 'CA1BBFC3-35EA-4984-BCD1-9E0EB385E4BE', 0)
PRINT @ProductIds
FETCH NEXT FROM MY_CURSOR INTO @ProductIds
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
我不確定問題是語法還是我嘗試過的方法,但我不斷收到錯誤
訊息 137,級別 16,狀態 1,第 76 行
必須宣告標量變數“@ProductIds”。訊息 137,級別 16,狀態 1,第 81 行
必須宣告標量變數“@ProductIds”。訊息 137,級別 16,狀態 1,第 82 行
必須宣告標量變數“@ProductIds”。
我正在學習 SQL,所以目前我發現它是一個很大的挑戰
uj5u.com熱心網友回復:
如果您正在學習 SQL,那么您應該做的第一件事就是停止考慮回圈任何事情,SQL 已經過優化,可以一次操作集合而不是一行。您只需要:
insert dbo.myProducts (ProductTypeId, prodDesc,Value)
Select ProductTypeId,'CA1BBFC3-35EA-4984-BCD1-9E0EB385E4BE',0
from dbo.ProductType;
雖然這看起來有點混亂,但 ProductId 和 ProductTypeId 之間似乎有些混淆,并且您似乎想為每種產品型別插入一個具有相同 GUID 描述的產品。但這是避免 70 行代碼和低效回圈的一般結構。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/514954.html
上一篇:將手部X光片DICOM轉換為PNG回傳白色/明亮影像
下一篇:如何為每場比賽回傳一個新列
