如何使用Laravel获取SQL Server存储过程的结果值?

时间:2017-03-22 14:45:31

标签: php sql-server laravel stored-procedures

我在使用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模型,因为我没有数据库,我不想创建只调用存储过程的模型。

您是否知道如何获取存储过程的返回值?感谢

0 个答案:

没有答案