簡體   English   中英

SQL插入存儲過程,如果

[英]sql insert stored procedure with if

Insert into xHH_QuickScan
(
    ScanID,
    EmployeeID,
    ProjectID,
    Barcode,
    Scandate,
    Scantime,
    ManualEntry,
    Category,
    Date1,
    Date2,
    Serial,
    Descrid,
    Date3,
    AssetID,
    Date4,
    AStatus,
    BarcodeNew,
    SerialNew,
    DescrNew
)
Values
(
/****** check DescID value ******/
if @AssetID = ''
    Begin
        Set @Descrid = ''
    End
Else
    Begin
         Set @Descrid = @Descrid
        END
End

    @ScanID,
    @EmployeeID,
    @ProjectID,
    @Barcode,
    @Scandate,
    @Scantime,
    @ManualEntry,
    @Category,
    @Date1,
    @Date2,
    @Serial,
    @Descrid,
    @Date3,
    @AssetID,
    @Date4,
    @AStatus,
    @BarcodeNew,
    @SerialNew,
    @DescrNew
)

這將引發錯誤。 我也嘗試過CASE,但有錯誤。 我需要測試@AssetID的值並相應地更改@Descrid的值

是的,它會的。 您不能在values語句中使用過程代碼,因為它們不是值。

嘗試

insert xHHQuickScan (ScanID, DescID, ... )
select 
      @ScanID,
      case Isnull(@assetID,'') = '' then ''
                  else @DescID 
      end, 
      ...

嘗試這個:

Insert into xHH_QuickScan
    (
    ScanID,
    EmployeeID,
    ProjectID,
    Barcode,
    Scandate,
    Scantime,
    ManualEntry,
    Category,
    Date1,
    Date2,
    Serial,
    Descrid,
    Date3,
    AssetID,
    Date4,
    AStatus,
    BarcodeNew,
    SerialNew,
    DescrNew
    )
Values
    (
    @ScanID,
    @EmployeeID,
    @ProjectID,
    @Barcode,
    @Scandate,
    @Scantime,
    @ManualEntry,
    @Category,
    @Date1,
    @Date2,
    @Serial,
    (CASE WHEN @AssetID = '' THEN '' ELSE @Descrid END),
    @Date3,
    @AssetID,
    @Date4,
    @AStatus,
    @BarcodeNew,
    @SerialNew,
    @DescrNew
    )

就個人而言,我更喜歡這種方式。

/****** check DescID value ******/
if @AssetID = ''
    Begin
        Set @Descrid = ''
    End

Insert into xHH_QuickScan
(
    ScanID,
    EmployeeID,
    ProjectID,
    Barcode,
    Scandate,
    Scantime,
    ManualEntry,
    Category,
    Date1,
    Date2,
    Serial,
    Descrid,
    Date3,
    AssetID,
    Date4,
    AStatus,
    BarcodeNew,
    SerialNew,
    DescrNew
)
Values
(
    @ScanID,
    @EmployeeID,
    @ProjectID,
    @Barcode,
    @Scandate,
    @Scantime,
    @ManualEntry,
    @Category,
    @Date1,
    @Date2,
    @Serial,
    @Descrid,
    @Date3,
    @AssetID,
    @Date4,
    @AStatus,
    @BarcodeNew,
    @SerialNew,
    @DescrNew
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM