【问题标题】:BEGIN TRAN cause php sqlsrv return emptyBEGIN TRAN 导致 php sqlsrv 返回空
【发布时间】:2014-03-27 10:53:32
【问题描述】:

这很奇怪,当我在 sp 中有“begin tran”时,它不会返回任何行,但如果带走,它可以正常工作。为什么会这样?我正在使用 codeigniter sqlsrv 数据库驱动程序。

sp

ALTER proc [dbo].[sp_test] @MembershipId int, @CardNumber varchar(50) as

begin tran
select 'hello world' hi
commit tran

php

$sql = sprintf("EXEC [sp_test] @MembershipId=0,@CardNumber=123");       
$query =  $this->oDb->query($sql);
print_r($query->result());

【问题讨论】:

  • 如果只有 1 个 select 语句,为什么还需要事务?
  • 这是一个非常简化的 sp,并不能反映我对多重语句的真实 sp。这只是为了说明问题。
  • 很公平。您的 SP 中是否有对应的 COMMITROLLBACK
  • 是的,我有,刚刚编辑了 sp。它仍然没有返回任何行。
  • 好的,当您直接从 SSMS 或其他地方运行时,您的实际存储过程是否返回任何结果?

标签: php sql sql-server codeigniter sqlsrv


【解决方案1】:

对于那些可能面临这个问题的人来说,解决方案是如此简单。

不要在查询中使用 EXEC,所以应该是这样的

$sql = sprintf("[sp_test] @MembershipId=0,@CardNumber=123");      

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 2015-06-24
    • 2020-10-10
    • 2017-10-22
    • 2021-03-31
    相关资源
    最近更新 更多