我試圖設置此存儲過程的ActionReq
列爲未提供ActionReq時的Expiration + AdvancedCancel的值。 ActionReq
和Expiration是日期時間,AdvancedCancel是一個int。我該怎麼做?我的SQL技能非常基礎。INSERT INTO語句中的情況
ALTER PROCEDURE [dbo].[insertIntoGrid]
@Vendor nvarchar(max),
@Product nvarchar(max),
@Type nvarchar(max),
@AccountCode nvarchar(max),
@2016AccCode nvarchar(max),
@BusinessUnit nvarchar(max),
@Group nvarchar(max),
@TIAYTD nvarchar(max),
@ContractPeriod nvarchar(max),
@RenewPeriod nvarchar(max),
@Expiration datetime,
@AdvancedCancel nvarchar(max),
@ActionReq datetime,
@Notes nvarchar(max),
@Division nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO TestRedo3(Vendor, [Product/Service], [Type], AccountCode,
[2016AccCode], BusinessUnit, [Group], TIAYTD,
ContractPeriod, RenewPeriod, Expiration, AdvancedCancel,
case [ActionReq] is null THEN dateadd(day, @AdvancedCancel, @Expiration)
else ActionReq
end as ActionReq, Notes, Division)
VALUES (@Vendor, @Product, @Type, @AccountCode,
@2016AccCode, @BusinessUnit, @Group, @TIAYTD,
@ContractPeriod, @RenewPeriod, @Expiration, @AdvancedCancel,
@ActionReq, @Notes, @Division)
END
你真的有每一個列定義爲爲nvarchar(最大)? –
你不能只是決定插入什麼列,就像你在做什麼。您需要將您的插入語句更改爲select語句。然後,您可以使用案例表達式來決定所需的列。 –