我得到这个错误 Msg 102,Level 15,State 1,Procedure CostTest_02,Line 43 ';'附近语法不正确。SQL光标语法问题
以“GO”红色下划线我一直在寻找一段时间的错误,我找不到!我对游标不是很有经验(这是我写的第一本)如果任何人都可以发现它或任何其他错误,我会非常感谢
http://imgur.com/9k40O < -----图片是更多清晰(推荐)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE CostTest_02
AS
BEGIN
DECLARE @Issue_id int;
DECLARE @Master_id int;
DECLARE @Issue_table varchar(255);
DECLARE @price real;
DECLARE @rowcount bigint;
DECLARE cost_cursor cursor FOR
SELECT [Issue Id], [Master Id], [Issue Table], [Price]
from Adhoc_datafix..[Issue Table]
FOR UPDATE OF ADHOC_DATAFIX..[Issue Cost];
OPEN cost_cursor;
FETCH NEXT FROM cost_cursor into @Issue_ID, @Master_id, @Issue_table, @Price
WHILE @@FETCH_STATUS = 0
BEGIN
Select count(*) from @Issue_Table
set @Rowcount = @@rowcount
UPDATE ADHOC_DATAFIX..[Issue Cost]
set [Issue Id] = @Issue_ID ,
[Master Issue Id] = @Master_ID ,
[Row Count] = (Select count(*) from @Issue_Table), [email protected],
[Cost] = CAST(@Rowcount * @price as money)
WHERE CURRENT OF cost_cursor;
FETCH NEXT FROM cost_cursor
END
close cost_cursor;
DEALLOCATE cost_cursor;
GO
是的,这实际上帮了很多,但我仍然不确定两种不同类型的FETCH,我肯定只需要一个FETCH ? – Callum
您需要同时提取,但它们都应该是'从cost_cursor下一步获取@Issue_ID,@Master_id,@Issue_table,@ Price'。第一次获取获得第一个匹配的行并设置了初始的“fetch_status”,即是否找到了某个东西。在每次循环之后,再次调用fetch来尝试获取另一行并更新'fetch_status'。 – Rhumborl
非常感谢!那就是我想要的只是需要确认 – Callum