我有一个游标(只是为了练习和测试游标),我想插入我的结果到诱惑我尝试了这个,但我得到了这个错误
游标声明中不允许使用into子句。
我的代码:
DECLARE cursor_brand CURSOR FOR
SELECT firstname, LastName
INTO #tempTable_2
FROM Person.Person
JOIN Sales.SalesOrderDetail ON SalesOrderDetail.SalesOrderDetailID = Person.BusinessEntityID
JOIN Sales.SalesOrderHeader ON SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID
WHERE OrderDate LIKE '%2011%' AND LineTotal > 10000
ORDER BY LastName
OPEN cursor_brand;
FETCH NEXT FROM cursor_brand
WHILE @@FETCH_STATUS = 0
FETCH NEXT FROM cursor_brand
CLOSE cursor_brand
DEALLOCATE cursor_brand;
1条答案
按热度按时间zmeyuzjn1#
我真的不明白你为什么需要光标。使用
select ... into ...
语法就足够了,所以我认为您的整个代码应该简化为:请注意,我使用了表别名来缩短查询-我必须对
select
以及where
条款。如果这些假设是正确的,那么您只能选择person
列,所以我实际上不确定这段代码是否完全符合您的要求:如果一个人有多行满足salesOrder
以及salesOrderDetail
,则会在temp表中多次插入。你可以通过使用exists
而不是join
学生:最后,如果
soh.OrderDate
属于date
-与数据类型一样,您应该使用日期函数而不是字符串函数来过滤它。也就是说,替换为:使用: