sqlserver的存储过程执行都很正常,就是php获取不到返回的参数,这个问题再调用sql2008r2的时候出现问题,在调用sql2016的时候正常,很奇怪!
参考解决问题的资料:
sqlsrv_next_result($stmt);
echo $outSeq;
$freturninfo = ' ';
//这个地方比较变态,如果定义一个空的字符串$freturninfo='',则执行存储过程的时候返回值字符串比较长会提示字"符串数据,右截断"
//pro_NewReceiveBill_oper,需要用"{}"括起来,"?"代表存储过程所需要的参数,包括输入和输出的参数
$tsql_callSP = "{call pro_btob_NewReceiveBill_oper(?,?,?,?,?,?,?,?,?,?)}";
$params = array(
array($fopertype, SQLSRV_PARAM_IN),
array($fordersn, SQLSRV_PARAM_IN),
array($fpayno, SQLSRV_PARAM_IN),
array($fpayamt, SQLSRV_PARAM_IN),
array($fcompanynumber, SQLSRV_PARAM_IN),
array($fdeptnumber, SQLSRV_PARAM_IN),
array($fbank, SQLSRV_PARAM_IN),
array($famt, SQLSRV_PARAM_IN),
array($fmemo, SQLSRV_PARAM_IN),
array($freturninfo,SQLSRV_PARAM_INOUT)
);
//sqlsrv_query($conn, 'set names GB2312');
$stmt3 = sqlsrv_query($conn, $tsql_callSP, $params);
if( $stmt3 === false)
{
//echo 'error';
}
sqlsrv_next_result($stmt3); //这个地方是关键点==============
//echo "info: ".$freturninfo;
sqlsrv_free_stmt($stmt3);
sqlsrv_close($conn);
return $freturninfo;