Ad Unit (Iklan) BIG

how to create insert and update store procedure with xml in sql server

Insert Data Store Procedure:

CREATE TABLE #EMP
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[NAME] [nvarchar](50)  NULL,
[AGE] [int] NULL,
[SALARY] [bigint] NULL
)
GO

INSERT INTO  #EMP ([NAME], [AGE], [SALARY]) VALUES (N'DEV2', 23, 35000)
GO

/* 
begin tran 
--rollback 
exec usp_Insert_EMPTemp_Form_Detail '<EMP> 
  <NAME>AAY</NAME> 
  <GE>22</AGE> 
  <SALARY>55000</SALARY> 
</EMP>' 
*/

CREATE PROCEDURE usp_Insert_EMPTemp_Form_Detail 
@XML TEXT 
AS
BEGIN 
SET NOCOUNT ON; 
DECLARE @hDoc1 int             
EXEC sp_xml_preparedocument @hDoc1 OUTPUT, @XML 
BEGIN TRANSACTION 
BEGIN TRY   
INSERT INTO #EMP(NAME,AGE,SALARY) 
SELECT NAME,AGE,SALARY from openxml(@hDoc1,'/EMP',2) 
WITH 

ID varchar(10)'ID', 
NAME varchar(50)'NAME',   
AGE varchar(5)'AGE', 
SALARY varchar(10) 'SALARY'   

COMMIT TRANSACTION; 
SELECT '1' as Status 
END TRY   
BEGIN CATCH   
ROLLBACK TRANSACTION;
SELECT '0' as Status 
END CATCH ;
END

_________________________________________________________________________________

Update Data Store Procedure:

/*
begin tran
--rollback
exec usp_Update_C_Form_Detail '<EMP>
  <ID>5</ID>
  <NAME>AJAY</NAME>
  <AGE>22</AGE>
  <SALARY>55000</SALARY>
</EMP>'
*/
CREATE PROCEDURE usp_Update_EMP_Form_Detail
@XML TEXT
AS             
BEGIN
SET NOCOUNT ON;             
DECLARE @hDoc1 int             
EXEC sp_xml_preparedocument @hDoc1 OUTPUT, @XML
BEGIN TRANSACTION               
BEGIN TRY
update EMP set EMP.NAME=T.NAME ,EMP.AGE =T.AGE,EMP.SALARY=T.SALARY
from  (select ID,NAME,AGE,SALARY from openxml(@hDoc1 ,'/EMP',2)
with
(
ID varchar(10)'ID', 
NAME varchar(50)'NAME',   
AGE varchar(5)'AGE',
SALARY varchar(10) 'SALARY' 
)
)T
where EMP.ID=T.ID
SELECT 1 as Status
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
SELECT 0 as Status
ROLLBACK TRANSACTION;
END CATCH
END

Post a Comment

0 Comments