0

我想将数据插入存储过程。有条件需要满足。 Select Max value from OF Table Field "OurRef" From Table "tblPurchaseInvoice" Where SupplierID=SomeID.Then If OurRef>0然后值将插入是OurRef+1Else Set Vale OurRef=100。我已经写存储过程,但它不是working.Thanks在Advance.Below从表中选择最大值并在存储过程中使用If Else条件设置值

ALTER PROCEDURE [dbo].[addPurchaseInvoicing] 
(
@JobID int = null, 
@InvoiceDate datetime, 
@SupplierID int, 
@SuppliersInvoiceNumber VARCHAR(40), 
@PurchaseOrderRef varchar(20), 
@Type tinyint, 
@Paid tinyint, 
@ReferencePurchaseInvoiceID tinyint = null 
) 
AS 
DECLARE @ID INT = 0; 
DECLARE @OURREF AS INT=0; 
BEGIN 
IF ((select MAX(OurRef) from tblPurchaseInvoice where [email protected])=NULL) 
BEGIN 
    SET @OURREF='100' 
END 
ELSE IF(@OURREF>'0') 
    BEGIN 
    SET @OURREF='100'+'1' 
    END 
BEGIN 
    INSERT INTO tblPurchaseInvoice(
     JobID, 
     InvoiceDate, 
     SupplierID, 
     OurRef, 
     SuppliersInvoiceNumber, 
     PurchaseOrderRef, 
     [Type],  
     Paid, 
     ReferencePurchaseInvoiceID, 
     OurRef 
     ) 
VALUES (
     @JobID, 
     @InvoiceDate, 
     @SupplierID, 
     @OurRef, 
     @SuppliersInvoiceNumber, 
     @PurchaseOrderRef, 
     @Type, 
     @Paid, 
     @ReferencePurchaseInvoiceID, 
     @OURREF 
); 
SET @ID = @@IDENTITY; 
END 
RETURN @ID 
END 

回答

0

不知道这是它不工作的主要原因,但使用 (价值= NULL)代替(值是NULL)可能会导致一些问题

((select MAX(OurRef) from tblPurchaseInvoice where [email protected])=NULL) 

可以被重写为:

((select MAX(OurRef) from tblPurchaseInvoice where [email protected]) IS NULL) 

= NULL vs. IS NULL