我在使用Laravel 5.4获取SQL Server存储过程的结果时遇到问题。
我正在使用Laravel来调用存储过程,该存储过程在几个表中插入一些值并返回新行的ID。为简单起见,我们假设这是存储过程
procedure proc
@param1 int,
@param2 int
AS
SET NOCOUNT ON
SET XACT_ABORT ON
begin tran
insert into table (x,y) values (@param1, param2)
declare @id_table bigint = scope_identity()
commit
return @id_table
该过程有效,我知道这是因为我在MSSQL Management Studio中测试了它(是的,我必须使用存储过程)
现在,我想从Laravel调用此存储过程来存储值并获取返回值。我尝试了以下内容:
首先尝试:
$c = DB::connection('sqlsvr')->select('exec proc ?,?', array($var1, $var2));
在这种情况下,存储过程执行成功,因为表中插入了新行,但$ c是一个空数组。
第二次尝试:
$c = DB::connection('sqlsvr')->statement('exec proc ?,?', array($var1, $var2));
在这种情况下,存储过程也会成功执行,但$ c是一个布尔值。
我没有插入值的Eloquen模型,因为我没有数据库,我不想创建只调用存储过程的模型。
您是否知道如何获取存储过程的返回值?感谢