【问题标题】:Laravel return empty array after stored procedure callLaravel 存储过程调用后返回空数组
【发布时间】:2018-08-13 21:10:13
【问题描述】:

我使用的是 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'

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

【问题讨论】:

  • 我想你忘了一个额外的?

标签: php sql-server laravel-5.6


【解决方案1】:

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

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

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

【讨论】:

  • 没错,我想解决另一个错误后我忘记添加那个参数了哈哈谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多