0

我有

消息 156,级别 15,状态 1,过程 Flag_Account,第 21 行关键字“while”附近的语法不正确。消息 156,级别 15,状态 1,过程 Flag_Account,第 23 行关键字“选择”附近的语法不正确。

当我尝试跑步时

    USE [hesabat2]
    GO

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    create  PROCEDURE [dbo].[Flag_Account]


    AS
begin
DECLARE @Acc_link int, @Result int,@inc int,@Result2 int
SET @inc = 0
set @Result =0
DECLARE A_Cursor CURSOR FOR
   Select account_id FROM ACCOUNTS
OPEN A_Cursor

FETCH NEXT FROM A_Cursor INTO @Acc_link

WHILE (@@FETCH_STATUS =0)
BEGIN

   set @Result= (select a.account_link from ACCOUNTS a where account_id= @Acc_link
   while(@Result = 0)
   begin
   set @Result = select a.account_link from ACCOUNTS a where account_id=@Result
   SET @inc= @inc+1
   end
    update ACCOUNTS set flag_color=@inc where account_id= @Acc_link



   FETCH NEXT FROM A_Cursor INTO  @Acc_link

   END

   CLOSE A_Cursor
   DEALLOCATE A_Cursor
   end
4

3 回答 3

2

两个问题。

这缺少一个结束括号:

  set @Result= (select a.account_link from ACCOUNTS a where account_id= @Acc_link

这缺少打开和关闭括号:

  set @Result = select a.account_link from ACCOUNTS a where account_id=@Result
于 2013-11-07T10:27:40.693 回答
2

你错过了一个 ) 就行了

set @Result= (select a.account_link from ACCOUNTS a where account_id= @Acc_link

也可以是其他东西,但请先尝试。

于 2013-11-07T10:28:00.923 回答
0

正确的程序如下:

create PROCEDURE [dbo].[Flag_Account]
AS 
begin 
DECLARE @Acc_link int, @Result int,@inc int,@Result2 int 
SET @inc = 0 
set @Result =0 
DECLARE A_Cursor CURSOR FOR Select account_id FROM ACCOUNTS 
OPEN A_Cursor
FETCH NEXT FROM A_Cursor INTO @Acc_link
WHILE @@FETCH_STATUS =0 
BEGIN
set @Result= (select a.account_link from ACCOUNTS a where account_id= @Acc_link 
while  @Result = 0
   begin 
      set @Result = select a.account_link from ACCOUNTS a where account_id=@Result 
     SET @inc= @inc+1 end update ACCOUNTS set flag_color=@inc where account_id= @Acc_link
     FETCH NEXT FROM A_Cursor INTO @Acc_link
   END
end
CLOSE A_Cursor 
DEALLOCATE A_Cursor 
end
于 2013-11-07T10:30:57.170 回答