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&amp;mysql(五)
Oct 09 PHP
六酷社区论坛HOME页清新格调免费版 下载
Mar 07 PHP
php 用sock技术发送邮件的函数
Jul 21 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
PHP 读取文件的正确方法
Apr 29 PHP
PHP文件缓存内容保存格式实例分析
Aug 20 PHP
php中实现获取随机数组列表的自定义函数
Apr 02 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 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 getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
php实现的通用图片处理类
2015/03/24 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
C语言笔试集
2012/07/24 面试题
弘扬雷锋精神演讲稿
2014/05/10 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
检讨书范文
2015/01/27 职场文书
门店店长岗位职责
2015/04/14 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记