PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解


Posted in PHP onJuly 03, 2013

【PHP Source Code】:

$dbh = new PDO('sqlsrv:server=连接地址;Database=数据库名', 用户名, 密码);
try {
 $procName = "P_Test_GetMixData";
 $stmt = $dbh->prepare("EXEC $procName ?, ?, ?");
 $nReturnValue = 0;
 $strReturnValue = "";
 $strSearchValue = "abandonship";
 $stmt->bindParam(1, $nReturnValue, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE);
 $stmt->bindParam(2, $strReturnValue, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 10);
 $stmt->bindParam(3, $strSearchValue , PDO::PARAM_STR);
 $stmt->execute(); //获取第一个结果集.
 $rowset_1 = $stmt->fetch(PDO::FETCH_ASSOC);
 print_r($rowset_1);
 echo '<br><br>';
 //获取第二个结果集.
 $stmt->nextRowset();
 $rowset_2 = $stmt->fetch();
 print_r($rowset_2);
 echo '<br><br>';
 $stmt->nextRowset();
 // 获取两个输出类型的参数
 echo $nReturnValue.'<br><br>'; 
 echo $strReturnValue; 
} catch (Exception $e) {
 echo $e->getMessage();
}

【SQL PROCEDURE】:
/**
* 用于测试PDO调用MsSQLServer2012存储过程获取复合结果集Demo
* Code CreateBy abandonship 2012.10.11
**/
CREATE PROCEDURE [dbo].[P_Test_GetMixData](
 @Message_1 tinyint output,
 @Messgae_2 varchar(10) output,
 @SearchValue varchar(50)
) As
set nocount on set @Message_1 = 123
 set @Messgae_2 = 'Hi,there!This is abandonship!'
 select * from _T1 where col1 like '%'+@SearchValue+'%'
 select * from _T2 where col1 like '%'+@SearchValue+'%'
set nocount off

【一些要注意的问题】:当bindParam中存在需要输出类型的参数时,必须包含长度($length)。
【备注】:$length: An optional (integer) length of the data type. You can specify PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE to indicate the default size when using PDO::PARAM_INT or PDO::PARAM_BOOL in $data_type.
PHP 相关文章推荐
用PHP编程语言开发动态WAP页面
Oct 09 PHP
相对路径转化成绝对路径
Apr 10 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
mac下Apache + MySql + PHP搭建网站开发环境
Jun 02 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
PHP实现货币换算的方法
Nov 29 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
php开发工具有哪五款
Nov 09 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 PHP
利用PHP生成CSV文件简单示例
Dec 21 PHP
Referer原理与图片防盗链实现方法详解
Jul 03 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
Jul 03 #PHP
解析在PHP中使用mysqli扩展库对mysql的操作
Jul 03 #PHP
PHP 文件编程综合案例-文件上传的实现
Jul 03 #PHP
Smarty foreach控制循环次数的实现详解
Jul 03 #PHP
浅析PHP绘图技术
Jul 03 #PHP
php修改NetBeans默认字体的大小
Jul 02 #PHP
PHP删除数组中特定元素的两种方法
Jul 02 #PHP
You might like
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
在Python中构建增广矩阵的实现方法
2019/07/01 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
留学自荐信的技巧
2013/10/17 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang