2014-03-27 54 views
0

這很奇怪,當我有sp中的「begin tran」時,它不會返回任何行,但是如果拿走,它會正常工作。爲什麼這樣?我正在使用codeigniter sqlsrv db驅動程序。BEGIN TRAN導致php 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()); 
+0

爲什麼你需要一個事務,如果你只有1條select語句? –

+0

這是一個非常簡化的sp,並沒有反映出我有多個語句的真實sp。這只是爲了顯示問題。 – William

+0

夠公平的。稍後在SP中有相應的「COMMIT」或「ROLLBACK」嗎? –

回答

0

對於那些誰可能面臨這個問題,解決方法就是這麼簡單。

不要在查詢中使用EXEC,所以應該是這個

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