Laravel存储过程调用后返回空数组

时间:2018-08-13 21:10:14

标签: php sql-server laravel-5.6

我正在使用Laravel 5.6,并且具有以下代码

 $values = [1, "2018-08-10", "2018-08-11"];
 $data = DB::select('exec SP_NAME ?, ?', $values);

 dump($data);

这是我的存储过程:

ALTER PROCEDURE [dbo].[SP_NAME]
@Opc int,
@FechaIni nvarchar(20)=null,
@FechaFin nvarchar(20)=null
AS
BEGIN
    if @opc=1
    begin
        SELECT * from table where convert(date, datetimeField) between @FechaIni and @FechaFin
    end
END

如果我在MSSQL Server上执行查询,则一切正常。当我从Laravel执行SP时,没有错误消息,只是一个空数组。

测试并处理代码后,发现问题出在我发送多个参数时,例如,我为此更改了选择查询:

SELECT * from table where convert(date, datetimeField) between '2018-08-10' and '2018-08-11'

可能是什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:1)

我对Laravel不熟悉,但是看起来您正在创建一个包含3个值的值数组,但是您在查询中仅发送了2个参数。应该是

$data = DB::select('exec SP_NAME ?, ?, ?', $values);

您不会从SQL Server中收到错误消息,因为您将@FechaIni@FechaFin定义为可选参数。