CREATE PROCEDURE  MoreData
 @TableName varchar (8),
 @iCount varchar(4) OUTPUTAS
 
DECLARE @SQL VARCHAR(1000)SET @SQL='SELECT id,sTitle FROM '+@TableName
EXEC(@SQL)SET @SQL='SELECT '+@iCount+'  =COUNT(*)  FROM '+@TableName
EXEC(@SQL)
GO
===================================================================
执行时没有出现异常,第一行查询返回的结果正常,但是第二行的返回参数(总记录数)为空!请帮我改下,谢谢!!!

解决方案 »

  1.   

    CREATE PROCEDURE MoreData
    @TableName varchar (8),
    @iCount int OUTPUTASDECLARE @SQL VARCHAR(1000)SET @SQL='SELECT id,sTitle FROM '+@TableName
    EXEC(@SQL)
    Declare @temp int
    execute   sp_executesql   @SQL,N'@temp  int   out',@temp    out   
    Set @iCount = @tempGO
      

  2.   

    CREATE PROCEDURE  MoreData
     @TableName varchar (8),
     @iCount varchar(4) OUTPUT
    AS
     
    DECLARE @SQL VARCHAR(1000)SET @SQL='SELECT id,sTitle FROM '+@TableName
    EXEC(@SQL)SET @SQL='SELECT '+@iCount+ '=COUNT(*) FROM '+@TableName
    EXEC(@SQL)
    GOdeclare @iCount varchar(4)
    exec moredata 'authors', @iCount output
    print @iCount
      

  3.   

    转换数据类型呢.
    cast(@iCount as varchar)
      

  4.   

    这是我照着网上的一个分页存储过程改的,虽然有些地方的语句我不明白是什么意思,但是可以正常运行!
    ========================================================================
    CREATE PROCEDURE  MoreData
     @TableName varchar (8),
     @iCount int OUTPUTAS
     
    DECLARE @SQL NVARCHAR(200)
    DECLARE @Temp intSET @SQL='SELECT id,sTitle FROM '+@TableName
    EXEC(@SQL)SET @SQL=N'SELECT @Temp  =COUNT(id)  FROM '+@TableName
    EXEC  SP_EXECUTESQL   @SQL,  N' @Temp BIGINT OUTPUT',  @Temp OUTPUTSET @iCount = @Temp
    GO