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分页显示制作详细讲解
Dec 05 PHP
php简单开启gzip压缩方法(zlib.output_compression)
Apr 13 PHP
php preg_replace替换实例讲解
Nov 04 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
33道php常见面试题及答案
Jul 06 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
php集成开发环境详解
Sep 24 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
一个取得文件扩展名的函数
2006/10/09 PHP
用PHP和ACCESS写聊天室(八)
2006/10/09 PHP
第九节--绑定
2006/11/16 PHP
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
Discuz! Passport 通行证整合
2008/03/27 PHP
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
linux下编译安装memcached服务
2014/08/03 PHP
php生成gif动画的方法
2015/11/05 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
2018/10/09 Javascript
京东优选小程序的实现代码示例
2020/02/25 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
教师申诉制度
2014/01/29 职场文书
保健品市场营销方案
2014/03/31 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
同学聚会感言一句话
2015/07/30 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python