Click here to Skip to main content
15,889,909 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
How to check duplication of employee Id in the following Stored Procedure which is passed as an strxml file?

/************************************************************
Module : C3PSPS
Author : Alexander
Date : Feb 13,2014
Name : ODSAVE_CREDIT_DEBIT_ADJUST
Description : Save OD Credit Debit Details into ODCREDITDEBIT Table
Parameters :

Tables : ODCREDITDEBIT
Associated PL/SQLs :
Warnings :
See Also :

************************************************************/

alter PROCEDURE [dbo].[0DSAVE_CREDIT_DEBIT_ADJUST]
(
@p_strXML NTEXT ,
@p_error_code INT OUTPUT,
@p_error_msg VARCHAR(1000) OUTPUT
)
AS
BEGIN
SET NOCOUNT ON

DECLARE @loc_error_code VARCHAR(40)
DECLARE @loc_error_msg VARCHAR(1000)
DECLARE @idoc INT
DECLARE @error VARCHAR(40)



/*Parse XML String*/
EXEC sp_xml_preparedocument @idoc OUTPUT, @p_strXML
IF @@ERROR <> 0 Goto ERROR_HANDLER_XML

--Insert records in to Table
INSERT
INTO
ODCREDITDEBIT
(

CorporateId,
EmpId,
AccountNo,
CardNo,
CurrentRecordStatus,
MonthId,
Months,
Years,
ModeId,
Mode,
Amount,
Reason,

CreatedBy,
CreatedDate,
ModifiedBy,
ModifiedDate,
EODProcessedDate
)
SELECT
COMPANYID,
EMPLOYEEID,

ACCOUNTNO,
CARDNO,
CURRENTRECORDSTATUS,
MONTHID,
MONTHS,
YEARS,

MODEID,
MODE,

AMOUNT ,
REASON,
CREATEDBY,
CREATEDDATE,
MODIFIEDBY,
MODIFIEDDATE,
EODPROCESSEDDATE

FROM OPENXML (@idoc, '/XML/ROWINFO', 2) WITH
(

COMPANYID VARCHAR(50),
EMPLOYEEID VARCHAR(50),
ACCOUNTNO VARCHAR(20),
CARDNO BIGINT,
CURRENTRECORDSTATUS VARCHAR(1),
MONTHID INT,
MONTHS varchar(20),
YEARS INT,

MODEID VARCHAR(1),
MODE VARCHAR(50),
AMOUNT NUMERIC(18,2),


REASON VARCHAR(200),
CREATEDBY VARCHAR(20),
CREATEDDATE datetime,
MODIFIEDBY VARCHAR(20),
MODIFIEDDATE datetime,
EODPROCESSEDDATE datetime
)
XMLItems

END

EXEC sp_xml_removedocument @idoc
SET @error= @@error
IF @error <> 0 GOTO ERROR_HANDLER
Set @p_error_msg = ''
Set @p_error_code='0'
Return(0)

ERROR_HANDLER:
Set @p_error_msg = 'Procedure Name : ODSAVE_CREDIT_DEBIT_ADJUST. System Error.' + RTRIM(convert(char(6),@error))
Set @p_error_code = '-1'
Return(-1)

ERROR_HANDLER_XML:
EXEC sp_xml_removedocument @idoc
SET @p_error_msg = 'Procedure Name : ODSAVE_CREDIT_DEBIT_ADJUST. System Error. XML Error'
SET @p_error_code = '-1'
Return(-1)
Posted
Comments
Vedat Ozan Oner 13-Feb-14 4:39am    
I am not sure, but you can try this.
at the end of insert statement:

)
XMLItems
where not exists (select 1 from ODCREDITDEBIT inner join XMLItems on ODCREDITDEBIT.EmpId=XMLItems.EMPLOYEEID)

let's hope, sql server will accept that :)
Member 10488324 13-Feb-14 6:48am    
i WANT TO CHECK A EMPLOYEE FIELD UNDER A CORPORATE IN DATABASE WITH THE XML GENERATED AS STRING AND SHOW AN ERROR MESSAGE ELSE INSERT IN STORED PROCEDURE

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900