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数据库连接类~~做成一个分页类!
Nov 25 PHP
php 页面执行时间计算代码
Dec 04 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
Apr 10 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
PHP获取文件相对路径的方法
Feb 26 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
Jan 12 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
PHP中addslashes与mysql_escape_string的区别分析
Apr 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
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
js初始化验证实例详解
2016/11/26 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
微信小程序tabBar设置实例解析
2019/11/14 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
简析Python的闭包和装饰器
2016/02/26 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
详解python中*号的用法
2019/10/21 Python
Python内置加密模块用法解析
2019/11/25 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
实体的生命周期
2013/08/31 面试题
大学生职业生涯规划书模版
2013/12/30 职场文书
项目管理计划书
2014/01/09 职场文书
2014年减负工作总结
2014/12/10 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
python缺失值填充方法示例代码
2022/12/24 Python