Step 1 : First create generic class
Step 2 : Create Collection of Employee and Convert into XML type
first add following references
- System.Xml.Linq;
- System.Xml;
- System.Data.SqlTypes;
Step 3 : Passing XML to Stored Procedure as Parameter
Step 4 : Using XML Data Type in Stored Procedure
public class Employee
{
public int EmployeeId { get; set; }
public string EmployeeName { get; set; }
public string City { get; set; }
public double Salary { get; set; }
}
Step 2 : Create Collection of Employee and Convert into XML type
first add following references
- System.Xml.Linq;
- System.Xml;
- System.Data.SqlTypes;
List<Employee> employeeCollection = new List<Employee>();
var xEle = new XElement("Employees",
from emp in employeeCollection
select new XElement("Employee",
new XElement("EmployeeId", emp.EmployeeId),
new XElement("EmployeeName", emp.EmployeeName),
new XElement("City", emp.City),
new XElement("Salary",emp.Salary)
));
Step 3 : Passing XML to Stored Procedure as Parameter
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@EmployeeXML",
new SqlXml(new XmlTextReader(xEle.ToString(), XmlNodeType.Document, null)));
Step 4 : Using XML Data Type in Stored Procedure
CREATE PROCEDURE [dbo].[sp_GetEmployee]
@EmployeeXML XML=NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @RETURNVAL INT=0
DECLARE @emp TABLE(EmployeeId INT,EmployeeName VARCHAR(200),City VARCHAR(100),Salary FLOAT)
INSERT INTO @emp
SELECT A.B.value('(EmployeeId)[1]', 'int' ) EmployeeId,
A.B.value('(EmployeeName)[1]', 'varchar(200)' ) EmployeeName,
A.B.value('(City)[1]', 'varchar(100)' ) City,
A.B.value('(Salary)[1]', 'float' ) Salary
FROM @EmployeeXML.nodes('/Employees/Employee') A(B)
SELECT * FROM @emp
END
No comments:
Post a Comment