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
用ODBC的分页显示
Oct 09 PHP
MySQL中create table语句的基本语法是
Jan 15 PHP
一个PHP数组应该有多大的分析
Jul 30 PHP
PHP可逆加密/解密函数分享
Sep 25 PHP
用PHP实现 上一篇、下一篇的代码
Sep 29 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
PHP简单遍历对象示例
Sep 28 PHP
php版微信返回用户text输入的方法
Nov 14 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 PHP
thinkphp5框架API token身份验证功能示例
May 21 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
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
JavaScript 比较时间大小的代码
2010/04/24 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
vue组件添加事件@click.native操作
2020/10/30 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
Python 列表(List)操作方法详解
2014/03/11 Python
浅谈python中set使用
2016/06/30 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
美国滑雪板和装备购物网站:Skis.com
2018/12/20 全球购物
软件测试面试题
2015/10/21 面试题
自我鉴定总结
2014/03/24 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
python字典的元素访问实例详解
2021/07/21 Python
vue3不同环境下实现配置代理
2022/05/25 Vue.js