我只想在field_tag值不存在时才插入表中。我想在插入表之前检查。如果收据存在于相同的field_tag值之前。如果不存在,那么只有我想插入。我使用SQL Server 2008只有当一个字段值不存在时才插入表值
INSERT INTO [INVENTORY].[TBL_RECEIPTS]
([TicketNbr]
,[RevisionNbr]
,[Location_ID]
,[ContractNumber]
,[Storage_ID]
,[VarietyID]
,[GrossWeight]
,[TareWeight]
,[Carrier]
,[Receipt_date]
,[Last_update]
,[Inv_weight]
,[SAPBatch]
,[MoistureFactor]
,[Load_Harvested]
,[FIELDID]
,[GROWER_LOAD_NBR]
,[HARVEST_NBR]
,[TRACE_WORMS]
,[COR_CERT]
,[GFF_DEST]
--- ,[GFF_CONTRACT]
,[CAB_ID]
,[sOURCE]
,[CREATED_BY]
,[TOTALBONUSES]
,[PIDNUMBER]
,[CARRIERVENDORID]
,[HAUL_ZONE]
,[FIELD_Tag]
,[Station]
,[COUNTY]
,[GradeDate]
,[Load_Received]
,[Load_Processed]
)
VALUES
(@CERT
,@RevisionNbr
,@Location_ID
,@ContractNUmber
,@Storage_ID
,@VarietyID
,@Gross_Weight
,@TareWeight
,@CarrierName
,@receipt_date
,Getdate()
,@Inv_weight
,@receiptbATCHnbr
,@DockageWeight
,@HARVEST_DT
,@FIELDID
,@GROWER_LOAD_NBR
,@HARVEST_NUMBER
,@TRACE_WORMS
,@COR_CERT
,@GFF_DEST
--- ,@CONTRACT
,@CAB_ID
,'I'
,'Scale Interface'
,0
,@ContractPIDNumber
,@CARRIERID
,@HAUL_ZONE
,@FIELD_TAG
,@STATION
,@COUNTY
,@GRADE_DT
,@Arrival_dt
,@current_Date
)
我不喜欢这样的:
insert into yourtable
(field1, field2, etc)
select value1, value2, etc
where not exists
(SELECT * FROM [INVENTORY].[TBL_RECEIPTS] WHERE Field_Tag = @FIELD_TAG)
如何打印错误,我想要做的错误处理这一点。如果重复,那么应该打印消息。
类似,我想知道在子查询和条件中写什么。整个sp在这里http://pastebin.com/0yFAXM59 –
在这个语句中SELECT的语法不正确set @Records =来自[INVENTORY]的SELECT count(*)[TBL_RECEIPTS] WHERE field_tag = @Field_Tag; –