我正在使用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'
可能是什么问题,我该如何解决?
答案 0 :(得分:1)
我对Laravel不熟悉,但是看起来您正在创建一个包含3个值的值数组,但是您在查询中仅发送了2个参数。应该是
$data = DB::select('exec SP_NAME ?, ?, ?', $values);
您不会从SQL Server中收到错误消息,因为您将@FechaIni
和@FechaFin
定义为可选参数。