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 什么是PEAR?(第三篇)
Mar 19 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
PHP 命名空间实例说明
Jan 27 PHP
解析php时间戳与日期的转换
Jun 06 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
Jun 24 PHP
yii添删改查实例
Nov 16 PHP
PHP-FPM实现性能优化
Mar 31 PHP
PHP的AES加密算法完整实例
Jul 20 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 PHP
详解php中生成标准uuid(guid)的方法
Apr 28 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 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安装全攻略:APACHE
2006/10/09 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
php+ajax导入大数据时产生的问题处理
2014/06/11 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
php发送与接收流文件的方法
2015/02/11 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
python类装饰器用法实例
2015/06/04 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
介绍一下Java中的Class类
2015/04/10 面试题
信息管理专业推荐信
2013/10/29 职场文书
业务经理的岗位职责
2013/11/16 职场文书
护理专业自荐信
2013/12/03 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python
MySQL数据库 安全管理
2022/05/06 MySQL
mysql如何查询连续记录
2022/05/11 MySQL