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 is_dir() 判断给定文件名是否是一个目录
May 10 PHP
APACHE的AcceptPathInfo指令使用介绍
Jan 18 PHP
php文件夹的创建与删除方法
Jan 24 PHP
PHP5.3新特性小结
Feb 14 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
php用wangeditor3实现图片上传功能
Aug 22 PHP
Laravel 5.5 实现禁用用户注册示例
Oct 24 PHP
有关PHP 中 config.m4 的探索
Aug 26 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数据库连接类~~做成一个分页类!
2006/11/25 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
php发送邮件的问题详解
2015/06/22 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
简单谈谈python中的多进程
2016/11/06 Python
python机器学习之决策树分类详解
2017/12/20 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python根据url地址下载小文件的实例
2018/12/18 Python
通过代码实例了解Python sys模块
2020/09/14 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
中科方德软件测试面试题
2016/04/21 面试题
人事专员岗位职责
2013/11/20 职场文书
授权委托书
2014/07/31 职场文书
导游词之青城山景区
2019/09/27 职场文书
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js
Golang 结构体数据集合
2022/04/22 Golang