存储过程如下:
ALTER PROCEDURE [dbo].[register] 
@username varchar(50),
@password varchar(50),
@email varchar(50)
AS
     insert into login(USER_NAME,USER_PASSWORD,E_MAIL) values(@username,@password,@email)
BEGIN SET NOCOUNT ON;
return @@rowcount
END在sql server里面运行后,返回的@@rowcount老是0,但login表有数据插入了,这是怎么回事呢
EXEC @return_value = [dbo].[register]
----这里提示could not find stored procedure 'dbo.register'
@username = N'gg',
@password = N'gg',
@email = N'11'

解决方案 »

  1.   

    ALTER PROCEDURE [dbo].[register]  
    @username varchar(50),
    @password varchar(50),
    @email varchar(50)
    AS
    BEGIN
    SET NOCOUNT ON; 
      insert into login(USER_NAME,USER_PASSWORD,E_MAIL) values(@username,@password,@email)
      return @@rowcount
    END
    GO
    --在sql server里面运行后,返回的@@rowcount是上一条记录的影响行数.
    EXEC @return_value = [dbo].[register]
    ----这里提示could not find stored procedure 'dbo.register'
    @username = N'gg',
    @password = N'gg',
    @email = N'11'详看联机帮助
      

  2.   


    BEGIN
    SET NOCOUNT ON; 
    insert into login(USER_NAME,USER_PASSWORD,E_MAIL) values(@username,@password,@email)
    return @@rowcount
    END
      

  3.   

    执行完毕insert into login(USER_NAME,USER_PASSWORD,E_MAIL) values(@username,@password,@email)
    马上加一句 select @tr = @@rowcount
    最后查select @tr as  rowcount
      

  4.   

    Transact-SQL 语句可以通过下列方式设置 @@ROWCOUNT 的值:将 @@ROWCOUNT 设置为受影响或被读取的行的数目。可以将行发送到客户端,也可以不发送。
    保留前一个语句执行中的 @@ROWCOUNT。
    将 @@ROWCOUNT 重置为 0 但不将该值返回到客户端。
    执行简单分配的语句始终将 @@ROWCOUNT 值设置为 1。不将任何行发送到客户端。这些语句的示例如下:SET @local_variable、RETURN、READTEXT 以及不带查询 Select 语句,如 SELECT GETDATE() 或 SELECT 'Generic Text'。在查询中执行分配或使用 RETURN 的语句将 @@ROWCOUNT 值设置为受查询影响或由查询读取的行数,例如:SELECT @local_variable = c1 FROM t1。数据操作语言 (DML) 语句将 @@ROWCOUNT 值设置为受查询影响的行数,并将该值返回到客户端。DML 语句不会将任何行发送到客户端。DECLARE CURSOR 和 FETCH 将 @@ROWCOUNT 值设置为 1。EXECUTE 语句保留前一个 @@ROWCOUNT。USE、SET <option>、DEALLOCATE CURSOR、CLOSE CURSOR、BEGIN TRANSACTION 或 COMMIT TRANSACTION 等语句将 ROWCOUNT 值重置为 0。
      

  5.   

    create table login_tab
    (
    user_namecol varchar(50),
    user_password varchar(50),
    e_mail varchar(50)
    )drop procedure [dbo].[register]
    gocreate PROCEDURE [dbo].[register]  
    @username varchar(50),
    @password varchar(50),
    @email varchar(50),
    @count int output
    AS
    BEGIN
    SET NOCOUNT ON; 
      insert into login_tab(USER_NAMEcol,USER_PASSWORD,E_MAIL) values(@username,@password,@email)
      select @count=@@rowcount
    END
    GO
    --在sql server里面运行后,返回的@@rowcount是上一条记录的影响行数.
    DECLARE @countdd int
    execute [dbo].[register] N'gg',N'gg',N'test',@countdd output
    select @countdd 影响行数
    go