你必须在存储过程最后的一句赋@lRecordCount的值
要不存储过程返回的就是SELECT * FROM TableName的数据记录了。

解决方案 »

  1.   

    CREATE PROCEDURE usp_oprlog_query
    @lRecordCount INTEGER OUTPUT
    AS
             DECLARE @I INT
             SET @I=200
    SELECT * FROM TableName
    SET @lRecordCount = @IGO
      

  2.   

    存储过程返回最后一个值:CREATE PROCEDURE usp_oprlog_query
    @lRecordCount INTEGER OUTPUT
    AS
      SELECT * FROM TableName
      SET @lRecordCount = 200
    GO
      

  3.   

    按照各位的做法,可是我还是没有得到这个值
    其实我的本意是想得到查询得到的记录数量,即
    SET @lRecordCount = @@ROWCOUNT
    我在查询分析器中确实看到@lRecordCount得到了正确的值,但是在vc中调用的时候,就是得不到正确的值
      

  4.   

    CREATE PROCEDURE usp_oprlog_query
    @lRecordCount INTEGER OUTPUT
    AS
    SELECT * FROM TableName
    SET @lRecordCount = @@ROWCOUNTGO
      

  5.   

    楼上的兄弟,我确实是这么写的,我把我的vc代码贴出来,是不是我的vc代码有问题
    DWORD dwRecordCount(0);
    SDWORD sqlParamLen = 0;
    ::SQLBindParameter(hStmt, 1, SQL_PARAM_OUTPUT, SQL_C_LONG, SQL_INTEGER, sizeof(DWORD), 0, &dwRecordCount, sizeof(DWORD), &sqlParamLen);
      

  6.   

    zjcxc(邹建) :能给一段这样的代码吗?
    我的email:[email protected]
      

  7.   


    create proc proc__
    @n int output,@nn varchar(100)
    as
    select @n=100
    select a.name 
    from syscolumns a join sysobjects b on a.id=b.id and b.name=@nn
    declare @n int
    exec proc__ @n output,'jobs'
    print convert(nvarchar(1000),@n)
      

  8.   

    create proc p
    @i int output
    as
    select @i=100return @i
      

  9.   

    谢谢各位兄弟,在一段帮助里面找到这句话:用于SQL Server的Microsoft OLE DB提供程序或SQL Server ODBC驱动程序回返回代码和输出参数值防止在绑定的变量中(存储过程),在返回给客户端的最后一个数据包中,Microsoft SQL Server返回输出参数和返回代码。因此,只有在应用程序处理或取消存储过程所返回的所有结果集后,才可以访问返回代码和输出参数值。   按照这段说法,在我的存储过程中返回的时候,得到的结果集还没有处理完,所以不能得到输出参数。这是不是sql server的一个不合理的地方呢?
      

  10.   

    前台调用时的SQL语句应为:"declare @a integer  exec usp_oprlog_query @a output Select @a "