存储过程如下:
CREATE PROCEDURE e_temp
@ROWS INT  OUTPUT
 AS
DECLARE @SQL NVARCHAR(4000)SET @SQL=N'SELECT * FROM  t 'EXEC SP_EXECUTESQL  @SQL
SET @ROWS=@@ROWCOUNT
GO
--结果@ROWS=0——————————————————————————————————
如果不用动态SQL
CREATE PROCEDURE e_temp
@ROWS INT  OUTPUT
 AS
DECLARE @SQL NVARCHAR(4000)SELECT * FROM tSET @ROWS=@@ROWCOUNT
GO
--结果@ROWS>0________________________________________请兄弟们指点:
怎样才能在采用动态SQL的情况下,得到@@ROWCOUNT的值?

解决方案 »

  1.   

    SET @SQL=N'SELECT * FROM  t 'EXEC (@SQL)
    SET @ROWS=@@ROWCOUNT
    GO***********
    SELECT * FROM tSET @ROWS=@@ROWCOUNT这样也许一样!
      

  2.   

    create PROCEDURE e_temp
    @ROWS INT  OUTPUT
     AS
    DECLARE @SQL NVARCHAR(4000)SET @SQL=N'SELECT * FROM  t set @rows=@@rowcount'EXEC SP_EXECUTESQL  @SQL,N'@rows int out',@rows out
    print @rows
    GO
      

  3.   

    拓狼的SET @SQL=N'SELECT * FROM  t set @rows=@@rowcount'的写法
    我也曾经试过,不行的。看你回了贴,我又试了下,竟然OK,真是!·#¥%·#%#¥·……·%谢谢兄弟们!结贴。