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 程序授权验证开发思路
Jul 09 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 PHP
php除数取整示例
Apr 24 PHP
php返回json数据函数实例
Oct 09 PHP
PHP动态柱状图实现方法
Mar 30 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
PHP mysqli事务操作常用方法分析
Jul 22 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常用图片处理类
2016/03/16 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
javascript一点特殊用法
2008/05/28 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
python装饰器decorator介绍
2014/11/21 Python
详解Python3的TFTP文件传输
2018/06/26 Python
对python周期性定时器的示例详解
2019/02/19 Python
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
我就是这样学习Python中的列表
2019/06/02 Python
python实现ip代理池功能示例
2019/07/05 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
单位提档介绍信
2014/01/17 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
教师业务学习材料
2014/12/16 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
乔迁新居祝福语
2019/11/04 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python