int ProcExeSql(char *OrigCalleeCode)
{  
HENV henv;
HDBC hdbc;
HSTMT hstmt;
SQLRETURN sr; SQLCHAR* theDiagState = new SQLCHAR[50];
SQLINTEGER theNativeState;
SQLCHAR* theMessageText  = new SQLCHAR[255];
SQLSMALLINT iOutputNo; long param1 = 0;
char param2[20]; SQLINTEGER cbValue1 = sizeof(long);
SQLINTEGER cbValue2= sizeof(param2);   SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, & henv );
   sr = SQLSetEnvAttr( henv, SQL_ATTR_ODBC_VERSION, ( void * ) SQL_OV_ODBC3, 0 ); 
   sr = SQLAllocHandle( SQL_HANDLE_DBC, henv, & hdbc );
   sr = SQLConnect( hdbc, (SQLCHAR*) "Calllog", SQL_NTS, (SQLCHAR*) "sa",SQL_NTS,(SQLCHAR*) "145454", SQL_NTS);
  
   sr = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, & hstmt );
   sr = SQLSetStmtAttr( hstmt, SQL_ATTR_CURSOR_TYPE, ( void * ) SQL_CURSOR_DYNAMIC, SQL_IS_INTEGER );
   sr= SQLBindParameter( hstmt, 1, SQL_PARAM_OUTPUT, SQL_C_LONG, SQL_INTEGER, sizeof( long ), 0,& param1, sizeof( long ), & cbValue1 );
   sr = SQLBindParameter( hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, sizeof( param2 ), 0,& param2, sizeof( param2 ), & cbValue2 );   sr = SQLExecDirect( hstmt, ( unsigned char * ) "{ ? = call p_LH_CheckUser(?) }", SQL_NTS );
   if (sr != SQL_SUCCESS)
   {
        //With this bug you will get an error message. Check this message in theMessageText.
SQLGetDiagRec(SQL_HANDLE_STMT,hstmt,1,theDiagState,&theNativeState,theMessageText,100,&iOutputNo);

   }
  
   sr = SQLMoreResults( hstmt );   SQLFreeStmt( hstmt, SQL_CLOSE );
   SQLFreeStmt( hstmt, SQL_DROP );
   SQLDisconnect( hdbc ); 
   SQLFreeHandle( SQL_HANDLE_DBC, hdbc ); 
   SQLFreeHandle( SQL_HANDLE_ENV, henv );
   delete theMessageText; 
   delete theDiagState;
return param1;}存储过程如下:
CREATE procedure p_LH_CheckUser
@mbno varchar(21)as
set nocount on
declare @iCounts int --计数器 select  @iCounts=1  //用于测试,修改这个值看返回的结果是否变化if @iCounts >2 
begin
return 100
end
else
begin
return 101
end
GO
在我自己开发的机器上用一切没有问题,但是传到服务器上去,程序就不对了,跟踪所有的执行都是对的,SQLExecDirect函数也是成功执行了的,但是就是返回值param1始终返回0.但是在本机能正常返回100或者101。本机XP操作系统,sql server 开发版+ RTM,服务器2000操作系统, SQL SERVER 2000企业版+sp3,那位大侠帮我分析下是什么原因导致的取的返回值不成功???