如何从HNA Prcedure向变量插入值

时间:2016-04-18 12:02:12

标签: hana

我想从一个过程向一个本地hana变量中插入一个值。请为我建议一个解决方案。

这是我的代码:

Create Procedure "Test1"(IN DocEntry Int)
    language SQLSCRIPT

    AS
    Begin
    Declare VehID Nvarchar(3);
    Declare Oddo Numeric;
    Declare PreDate Date;
    Declare CurDate Date;
    Declare Log_KM Numeric;

            Select"U_AdDate", "U_ItemCode"  INTO CurDate, VehID from "@DCC_WORDR" Where  "DocEntry" = :DocEntry ;

            Select Top 1 "U_AdDate", "U_Log_KM" INTO PreDate, Oddo  from "@DCC_WORDR" Where "U_ItemCode" = '358' and "DocEntry" <> :DocEntry Order By "U_AdDate" DESC;

            --Select :CurDate, :VehID, :Predate, :Oddo from Dummy;

            LogKM := (CALL "TRANSCARGOLTDLIVE"."DCC_Get_KM" (:VehID, :PreDate, :CurDate));

    End;

1 个答案:

答案 0 :(得分:0)

要通过过程分配变量值,必须使用过程OUT或IN / OUT参数。

因此,您的代码可能如下所示:

Create Procedure "Test1"(IN DocEntry Int)
language SQLSCRIPT

AS
Begin
Declare VehID Nvarchar(3);
Declare Oddo Numeric;
Declare PreDate Date;
Declare CurDate Date;
Declare Log_KM Numeric;

        Select "U_AdDate", "U_ItemCode"  INTO CurDate, VehID 
        from "@DCC_WORDR" 
        Where  "DocEntry" = :DocEntry ;

        Select Top 1 "U_AdDate", "U_Log_KM" INTO PreDate, Oddo  
        from "@DCC_WORDR" 
        Where "U_ItemCode" = '358' 
        and "DocEntry" <> :DocEntry 
        Order By "U_AdDate" DESC;


        CALL "TRANSCARGOLTDLIVE"."DCC_Get_KM" 
                 (:VehID, :PreDate, :CurDate, :LogKM);

End;

要使其正常工作,DCC_GET_KM过程必须将LogKM参数作为OUT参数。

除此之外,请为自己做一个大忙,并正确地格式化您的SQL语句。此外,当您通过查询分配PreDate和CurDate时,请确保使用合理的值初始化这些变量,以防查询返回空结果集。

  • 拉斯