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
定义为可选参数。
我正在使用 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
定义为可选参数。