[英]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.