sr = SQLBindParameter( hstmt, 
1, 
SQL_PARAM_OUTPUT, 
SQL_C_LONG, 
SQL_INTEGER, 
10,   //interger类型的应设为10
0,
&param1, 
sizeof(long), 
&cbValue1);

解决方案 »

  1.   

    {?=call proc_testODBC(?,?)}
    SQLBindParameter( hstmt, 1, SQL_PARAM_OUTPUT, ...
    SQLBindParameter( hstmt, 2, SQL_PARAM_INPUT, ...
    SQLBindParameter( hstmt, 3, SQL_PARAM_INPUT, ...
      

  2.   

    "{?=call proc_testODBC(?,?)}"这样不行,调用存储过程都是失败的,我试过
      

  3.   

    ...
    SQLBindParameter( hstmt, 2, SQL_PARAM_OUTPUT, ... //上面的写错了
    ...SQLExecDirect(hstmt, ...); //必须在bind parameter之后应该没问题啊?
      

  4.   

    declare @ret int\nexec @ret = DBNAME.dbo.SqlProcedure\nselect @ret
      

  5.   

    谢谢各位热心的朋友,问题已经解决了,今天静下心来看msdn里面的SQLExecDirect函数说明,终于找到答案了,在获得值之前要加SQLMoreResults函数才能获得到值(存储过程调用正确).英语差就是麻烦啊!希望对一些朋友能够有帮助.