大发体育娱乐在线-大发体育娱乐官方网站-大发体育娱乐登录网址
做最好的网站

PHP怎么样赢得mssql的囤积进程的出口参数

来源:http://www.dfwstonefabricators.com 作者:编程应用 人气:98 发布时间:2019-11-23
摘要:在支付进度中恐怕会遇见无法得到MSSQL存储进程的输出参数,比超级多相爱的人都不理解该咋办,本文将详细介绍PHP获得mssql的囤积进程的出口参数功效完结,要求明白的朋友能够参见下

在支付进度中恐怕会遇见无法得到MSSQL存储进程的输出参数,比超级多相爱的人都不理解该咋办,本文将详细介绍PHP获得mssql的囤积进程的出口参数功效完结,要求明白的朋友能够参见下复制代码 代码如下: $conn=mssql_connect("127.0.0.1","user","passwd"); mssql_select_db; $stmt=mssql_init;// $a=50001; mssql_bind($stmt,"RE电视机AL",$val,SQLVARCHA瑞虎); //用于直接回到return -103此类的值。 mssql_bind($stmt,"@outvar",$b,SQLVARCHA奥迪Q5,true);//用于再次回到在仓库储存进度中定义的输出参数 mssql_bind($stmt,"@invar",$a,SQLINT4); $result = mssql_execute;//不可能重返结果集,只可以拿到输出参数 //$result = mssql_execute; //重返结果集 //$records=mssql_fetch_array; //print_r; //mssql_next_result;下一个结果集,当等于FALSE的时候下四个就是出口参数 echo $b; echo $val; ?> 下边那些是从别的地点看看的。 小麻烦: 大家依据常规使用了三个MS Sql Server的囤积进程procA,它交给了一个出口参数nReturn, 何况再次来到了二个结出集。 在什么样让PHP调用这几个procA的时候,大家深受了一点小麻烦。 鱼肉和熊掌不可兼得: 大家当然梦想那样的代码能够既拿到输出参数,又得到重回的结果集: 复制代码 代码如下: // 初阶化要传进存款和储蓄进度的参数们: $nYear = 2001; $nPageSize = 20; $nPageNo = 1; // Initializes a stored procedure: $stmt = mssql_init("proc_stat_page", $db_mssql->Link_ID); // 绑定输入参数: mssql_bind($stmt, "@nReturn", $nReturn, SQLINT4, TRUE); mssql_bind($stmt, "@nYear", $nYear, SQLINT4); mssql_bind($stmt, "@nPageSize", $nPageSize, SQLINT4); mssql_bind($stmt, "@nPageNo", $nPageNo, SQLINT4); // 履行存款和储蓄进度,得到QueryID: $db_mssql->Query_ID = mssql_execute; 即便得到了结果集,可是,那样$nReturn参数是拿不到输出参数的。 假如把最终一句话改为: $db_mssql->Query_ID = mssql_execute; 输出参数倒是得到了,结果集又不曾了。 好疑似八个性骚扰和熊掌不可兼得的旗帜。 难道PHP连那么些都做不到?PHP手册中也绝非讲这几个难点。 来自于PHP维护者的分解: 原来大家这种调用办法是PHP 4.3本子此前一定是支撑的。 “可是,自从PHP 4.3本子之后,”他们说,“为了可以合作存款和储蓄进程重临多少个结实集,PHP改换那么些特点。” “要是您无需结果集,你应当设置mssql_execute的第四个可选参数为TRUE,那样mssql_execute方法之后你就可以得到输出参数了。” “要是你必要回到的结果集们,你应有为每一个结出集调用二次mssql_next_result。在结尾三个结果集重回之后,你再调用mssql_next_result就能够博得再次回到值FALSE,当时,你就能够访谈输出参数了。” 消除: 在最后大家补上一句话: // After the last result has been returned the return value will have the value returned by the stored procedure. mssql_next_result; 登时,法力生效了: PHP填充了精确的出口参数到$nRetVal里。

$conn=mssql_connect("127.0.0.1","user","passwd");
mssql_select_db("mydb");
$stmt=mssql_init("pr_name",$conn);//
$a=50001;
mssql_bind($stmt,"RETVAL",$val,SQLVARCHAR); //用于直接返回return -103此类的值。
mssql_bind($stmt,"@outvar",$b,SQLVARCHAR,true);//用于返回在存储过程中定义的输出参数
mssql_bind($stmt,"@invar",$a,SQLINT4);
$result = mssql_execute($stmt,true);//不能返回结果集,只能得到输出参数
//$result = mssql_execute($stmt,false); //返回结果集
//$records=mssql_fetch_array($result);
//print_r($records);
//mssql_next_result($result);下一个结果集,当等于FALSE的时候下一个就是输出参数
echo $b;
echo $val;

上边那一个是从其他地点见到的。

小麻烦:
咱俩依据惯例使用了一个MS Sql Server的存款和储蓄进度procA,它交给了四个输出参数nReturn,
同一时间回去了二个结出集。
在如何让PHP调用这些procA的时候,大家面前蒙受了几许小麻烦。

鱼肉和熊掌不可兼得:
我们本来指望那样的代码可以既拿到输出参数,又获得重回的结果集:
// 初始化要传进存储进程的参数们:
$nYear = 2004;
$nPageSize = 20;
$nPageNo = 1;
// Initializes a stored procedure:
$stmt = mssql_init("proc_stat_page", $db_mssql->Link_ID);
// 绑定输入参数:
mssql_bind($stmt, "@nReturn", $nReturn, SQLINT4, TRUE);
mssql_bind($stmt, "@nYear", $nYear, SQLINT4);
mssql_bind($stmt, "@nPageSize", $nPageSize, SQLINT4);
mssql_bind($stmt, "@nPageNo", $nPageNo, SQLINT4);
// 实行存款和储蓄进度,获得QueryID:
$db_mssql->Query_ID = mssql_execute($stmt,false);
就算如此赢得了结果集,可是,那样$nReturn参数是拿不到输出参数的。

假如把最终一句话改为:
$db_mssql->Query_ID = mssql_execute($stmt,true);
输出参数倒是拿到了,结果集又从不了。

恍如是一个杀害和熊掌不可兼得的标准。
莫非PHP连这些都做不到?PHP手册中也还未讲那么些题材。

出自于PHP维护者的表明:
本来大家这种调用办法是PHP 4.3版本在此之前一定是支撑的。
“然则,自从PHP 4.3本子之后,”他们说,“为了能够包容存款和储蓄进程重临多少个结果集,PHP退换那些本性。”
“要是你无需结果集,你应该安装mssql_execute的首个可选参数为TRUE,那样mssql_execute方法之后您就能够收获输出参数了。”
“纵然您供给再次回到的结果集们,你应为每叁个结实集调用叁遍mssql_next_result。在终极三个结实集重返之后,你再调用mssql_next_result就能够获得重回值FALSE,那时,你就足以访谈输出参数了。”

解决:
在结尾我们补上一句话:
// After the last result has been returned the return value will have the value returned by the stored procedure.
mssql_next_result($db_mssql->Query_ID);
那个时候,法力生效了:
PHP填充了金科玉律的出口参数到$nRetVal里。

本文由大发体育娱乐在线发布于编程应用,转载请注明出处:PHP怎么样赢得mssql的囤积进程的出口参数

关键词:

最火资讯