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新手上路(十三)
Oct 09 PHP
php 显示指定路径下的图片
Oct 29 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
May 09 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
laravel-admin的图片删除实例
Sep 30 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 array_walk() 数组函数
2011/07/12 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
JS array 数组详解
2009/03/22 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
简单谈谈python中的语句和语法
2017/08/10 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
医学专业大学生求职信
2014/07/12 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
村党建工作汇报材料
2014/11/02 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书