能获得记录集,但不能获得输出参数的值;
如果注释掉存储过程中的 exec(@sql),那么就能获得输出参数的值,但不能获得记录集
这是怎么回事?
if exists(select 1 from sysobjects where name='pageUserlist_p' and xtype='p')
drop procedure dbo.pageUserlist_p
go
create procedure dbo.pageUserlist_p
@intResult Int OUTPUT
as
set nocount on
declare @PageCount1 int
declare @sql nvarchar(4000)
begin tran
set @sql='select userid,userCode,userName,loadName,userPwd from user_t'
exec(@sql)
set @intResult=12
If @@Error <> 0
Begin
RollBack Tran
SET @intResult=-1
End
Else
Begin
Commit Tran
End
GO
调用该存储过程的代码:
sprintf(select_str,"{call pageUserlist_p(?)}");
connectDB(); //调用连接数据库函数
retcode = SQLBindParameter(hstmt, 1, SQL_PARAM_OUTPUT, SQL_C_LONG,SQL_INTEGER, 0, 0, &recordTotal, 0, &cb1); //返回值
retcode = SQLExecDirect(hstmt,(SQLCHAR *)select_str,SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode=SQLBindCol(hstmt,1,SQL_C_ULONG,&userid,11,&cb);
retcode=SQLBindCol(hstmt,2,SQL_C_CHAR,userCode,11,&cb);
retcode=SQLBindCol(hstmt,3,SQL_C_CHAR,userName,20,&cb);
retcode=SQLBindCol(hstmt,4,SQL_C_CHAR,loadName,20,&cb);
retcode=SQLBindCol(hstmt,5,SQL_C_CHAR,userPwd,20,&cb);
while (TRUE)
{
retcode = SQLFetch(hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
//代码
}
}
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课