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
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
第五节--克隆
Nov 16 PHP
PHP一些有意思的小区别
Dec 06 PHP
php socket方式提交的post详解
Jul 19 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
常用PHP框架功能对照表
Oct 23 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 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学习笔记之数组篇
2011/06/28 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
js编写简单的计时器功能
2017/07/15 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
pandas实现选取特定索引的行
2018/04/20 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
python speech模块的使用方法
2020/09/09 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
英语专业推荐信
2013/11/16 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
初中音乐教学反思
2014/01/12 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis