Yii2.0调用sql server存储过程并获取返回值
1、首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用。
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE PROCEDURE [dbo].[register_info]
- @name varchar(50),
- @sex char(1),
- @idcard char(30),
- @phone varchar(15),
- @address varchar(100),
- @create_time datetime
- AS
- BEGIN
- DECLARE @register_id varchar(14);
- BEGIN TRY
- BEGIN TRANSACTION;
- --插入注册信息,这里未做任何验证,直接插入
- INSERT into register_info (name, sex, idcard, phone, address, create_time)
- VALUES (@name, @sex, @idcard, @phone, @address, @create_time);
- COMMIT TRANSACTION;
- END TRY
- BEGIN CATCH
- IF (XACT_STATE()) = -1 --处理错误
- BEGIN
- --回滚
- ROLLBACK TRANSACTION;
- set @register_id = ''
- END;
- IF (XACT_STATE()) = 1 --处理死锁
- BEGIN
- --提交
- COMMIT TRANSACTION;
- END;
- END CATCH
- select @register_id as register_id
- END
2、在Yii2.0框架中调用sql server存储过程,和执行MySQL查询语句一样,sql语句的书写格式需要和调用执行sql server存储过程的书写格式一致。
- $procedure_sql = "exec register_info '$name','$sex', '$idcard', '$phone', '$address', '$create_time'";//调用sql server存储过程的sql语句
- $procedure_command = $db->createCommand($procedure_sql);
- $result = $procedure_command->queryOne();//获取返回值
使用var_dump打印 $result,发现报错:
SQLSTATE[IMSSP]: The active result for the query contains no fields.
3、在SQL Server数据库调用存储过程,发现是可以正常调用,并有返回值的。
而在yii2.0中调用,却报错,查阅资料,发现是因为储存过程执行后,还会返回影响行数而导致的问题。
4、修改存储过程,在存储过程体开头加入"set nocount on"以消除DML语句对返回结果的影响。
5、重复第二步操作,在yii2.0框架中重新调用执行 sql server 存储过程,并打印 $result:
6、可以正常打印显示返回值。
Yii2.0调用sql server存储过程并获取返回值的更多相关文章
- qt调用sql server存储过程并获取output参数
最近新做的一个项目需要使用qt5连接另一台机器上的sql server,虽然网上已有类似文章,但还是有些其中很少提及的问题,故在这里汇总下: qt连接sql server可以参考这篇文章: <Q ...
- SQL SERVER 存储过程中SELECT 返回值如何赋值给变量
今天在处理一个问题时,使用到一个存储过程,是用于更新并获取最新ID的.在使用过程中,需要获取到这个ID并赋值给变量,结果用EXEC @ID = 存储过程的方式获取失败了.具体情况如下: 为了还原整个情 ...
- VS中调用SQL SERVER存储过程
存储过程是经过编译的,永久保存在数据中的一组SQL语句,通过创建和使用存储过程能够提高程序的重用性和扩展性,为程序提供模块化的功能,还有利于对程序的维护和管理.以下就详谈一下,VB.NET怎样调 ...
- java 调用 sql server存储过程
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
- Java调用SQL Server存储过程
1.调用普通存储过程(1)创建存储过程CREATE Procedure [dbo].[GetContactListByName] /*根据联系人姓名获取联系人信息*/@Name nvarchar(5 ...
- Java的jdbc调用SQL Server存储过程Bug201906131119
SQL Server数据库存储过程,一个查询使用动态sql,另一个不使用动态sql,这种情况,jdbc可能获取不到实际查询数据,虽然数据库中执行没问题. 解决方法,都使用静态sql,或都使用动态sql ...
- PHP调用SQL Server存储过程
一.安装SQL Server Driver for PHP 在微软官网上发现了这个东西,他提供了一套PHP对MS2005/2008操作的全新函数库,并且支持UTF8,作为PHP的扩展运行.看来 ...
- SQL Server - Store procedure 如何返回值
存储过程 返回值 procedure return values : http://www.cnblogs.com/SunnyZhu/p/5542347.html return.select.outp ...
- laravel调用sql server存储过程并取得ReturnValue
alter proc [dbo].[aaa]( @AgencyID int,--代理商ID @AdminID int --结算操作人ID(管理员ID))asbegin select ...
随机推荐
- [Swift]LeetCode988. 从叶结点开始的最小字符串 | Smallest String Starting From Leaf
Given the root of a binary tree, each node has a value from 0 to 25 representing the letters 'a' to ...
- 【Redis篇】初始Redis与Redis安装
一.前述 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括st ...
- Python内置函数(42)——memoryview
英文文档: class memoryview(obj) memoryview objects allow Python code to access the internal data of an o ...
- Python内置函数(64)——tuple
英文文档: The constructor builds a tuple whose items are the same and in the same order as iterable‘s it ...
- 虎牙数万主播同时在线直播的秘密,CDN推流日志上行实时监控
6 月 10 日,又拍云 Open Talk | 2018 音视频技术沙龙·深圳站 顺利落幕,来自虎牙的直播运维研发架构师张波在沙龙上做了<基于CDN推流日志的主播上行实时监控及其自动化解密&g ...
- Intent简介-Android开发
一.Intent介绍: Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...
- 使用Genymotion遇到的坑_Genymotion无法启动_unable to start the virtual device
Genymotion 十分好用,以下是我使用Genymotion碰到的问题及解决办法.目前没有看到网上有完整的解决. 遇到如下图的问题: 这个问题很多人可能回去百度“the virtual devic ...
- SpringBoot入门教程(一)详解intellij idea搭建SpringBoot
最近公司有一个内部比赛(黑客马拉松),报名参加了这么一个赛事,在准备参赛作品的同时,由于参赛服务器需要自己搭建且比赛产生的代码不能外泄的,所以借着这个机会,本地先写了个测试的demo,来把tomcat ...
- 带着新人学springboot的应用01(springboot+mybatis+缓存 上)
上一篇结束,第一次做一个这么长的系列,很多东西我也是没有说到,也许是还没有想到,哈哈哈,不过基本的东西还是说的差不多了的.假如以后碰到了不会的,随便查查资料配置一下就ok. 咳,还有大家如果把我前面的 ...
- 补习系列-springboot-使用assembly进行项目打包
目录 springboot-maven插件 1. 项目打包Jar 2. 项目完整构建 3. 本地包依赖 参考文档 springboot-maven插件 springboot-maven插件 repac ...