set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go--------------------------
--整点获取新手卡号
--@intGetTime int --抓取整点
--------------------------ALTER PROC [dbo].[prCay_GetCard]
@intGetTime int --抓取整点
AS
DECLARE @intRId int SELECT TOP 1 [RId] = @intRId,[Number],[PassWord]
FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL UPDATE dbo.[Card] SET [GetTime]=@intGetTime,[Flag] = 1
WHERE [RId] = @intRId
GOUPDATE 语句不执行,为什么?怎么改?

解决方案 »

  1.   

    SELECT TOP 1  @intRId=[RId] ,[Number],[PassWord]
            FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL变量方向错了,晕应该要用动态来
      

  2.   

    ALTER PROC [dbo].[prCay_GetCard]
    @intGetTime int                        --抓取整点
    AS
    DECLARE @intRId int    SELECT TOP 1 [RId] = @intRId,[Number],[PassWord]
            FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL    UPDATE dbo.[Card] SET [GetTime]=@intGetTime,[Flag] = 1
            WHERE [RId] = @intRId
    GO红色的是不是搞反了? 你都没给@intRID赋值,不就是null么??
      

  3.   

    SELECT TOP 1 @intRId = [RId],[Number],[PassWord] 
            FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL 倒过来的话:向变量赋值的 SELECT 语句不能与数据检索操作结合使用。我就是想把查到的那条数据直接更新掉,谢谢
      

  4.   

    SELECT TOP 1 @intRId=[Rid]
    FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL
      

  5.   

    你至少少了begin endset ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    --整点获取新手卡号
    --@intGetTime int                        --抓取整点
    ALTER PROC [dbo].[prCay_GetCard]
    @intGetTime int                        --抓取整点
    AS
    begin
    DECLARE @intRId int
        SELECT TOP 1 [RId] = @intRId,[Number],[PassWord]
            FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL
        UPDATE dbo.[Card] SET [GetTime]=@intGetTime,[Flag] = 1
            WHERE [RId] = @intRId
    end
    GO
      

  6.   

    SELECT TOP 1  @intRId=[RId] FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL
      

  7.   

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    --整点获取新手卡号
    --@intGetTime int                        --抓取整点
    ALTER PROC [dbo].[prCay_GetCard]
    @intGetTime int                        --抓取整点
    AS
    begin
    DECLARE @intRId int
        SELECT TOP 1 [RId] = @intRId
        FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL
        UPDATE dbo.[Card] SET [GetTime]=@intGetTime,[Flag] = 1
        WHERE [RId] = @intRId
    end
    GO
      

  8.   


    SELECT TOP 1  @intRId=[RId] FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL2000的话要用动态来
      

  9.   

    回各位大哥的,我是SQL2005的,请给出正确的写法(帮我改掉)非常感谢
      

  10.   


    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    --整点获取新手卡号
    --@intGetTime int                        --抓取整点
    ALTER PROC [dbo].[prCay_GetCard]
    @intGetTime int                        --抓取整点
    AS
    begin
    DECLARE @intRId int
        SELECT @intRId = TOP 1 [RId]
        FROM dbo.[Card] WHERE [Flag] <> 1 OR [Flag] IS NULL
        UPDATE dbo.[Card] SET [GetTime]=@intGetTime,[Flag] = 1
        WHERE [RId] = @intRId
    end
    GO