繁体   English   中英

使用 Laravel 从 Microsoft SQL 存储过程获取 output 参数值

[英]Getting output parameter value from Microsoft SQL stored procedure using Laravel

我正在尝试使用 Laravel 通过存储过程将记录插入 Microsoft SQL 数据库,并从 output 参数中获取值。 我的记录已插入但没有得到@RetValue 为此,我尝试了

DB::select("DECLARE @RetValue INT; SELECT @RetValue as 'return'; EXEC AddDistrict 'somevalue', 1, @RetValue OUTPUT; SELECT @RetValue as 'abc';");
DB::select(DB::Raw("Declare @RetValue int EXEC AddDistrict 'somevalue', '1', @RetValue OUTPUT"),'select @RetValue as abc');
DB::select(DB::statement('CALL AddDistrict("DName"="asdfasdf", "PID"=1,"RetValue"="" )').'@RetValue as RetValue');
DB::select(" EXEC AddDistrict ?, ?", array( 'some_value',1));
DB::select(DB::raw("exec AddDistrict @DName = 'some_value', @PID = 1, @RetValue=''"));
DB::select('CALL AddDistrict(?, ?, ?)',
     array(
        'DName' => $request->DistrictName,
        'PID' => $request->province,
         'RetValue' => ''
        ));
DB::select('exec AddDistrict(?,?)',"some_value',1);

和许多其他人,但没有得到@RetValue。 大多数情况下,我得到一个像这样的空数组 []。

我的存储过程看起来像

CREATE PROCEDURE [dbo].[AddDistrict]
    
    @DName nvarchar(50)
    ,@PID int
    
    ,@RetValue int output
    
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    if not exists(select * from District where District_Name = @DName)

begin
    INSERT INTO [dbo].District
           ([District_Name],ProvienceID)
     VALUES (@DName,@PID)
     set @RetValue=1;
     end
     else
     begin
     set @RetValue=-1;
     end
END

我想要如果记录插入然后给我 1 如果没有插入然后给我 -1 如 SP 中所述

我找到了解决方案。 也许这不是正确的方法。 但经过以下更改后,我的代码现在可以顺利运行了。 只需删除此变量@RetValue int output并替换set @RetValue=1; SELECT 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM