Laravel return 存储过程调用后的空数组

Laravel return empty array after stored procedure call

我正在使用 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 查询:

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

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

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

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

您不会从 SQL 服务器收到错误,因为您将 @FechaIni@FechaFin 定义为可选参数。