나는 C#을 사용하여 저장 프로 시저 매개 변수로 XML 파일을 전달하는 가장 간단한 방법을 찾고 있습니다. 실제로 XML 파일을 만들어야합니다. 이 XML을 SQL 데이터베이스에 저장하십시오. 데이터베이스 저장 프로 시저에는 xml 유형의 매개 변수가 있습니다. 나는 이미 내가 원하는 경우 XML을 매개 변수로 저장 프로 시저에이 파일을 전송하기 위해 무엇을 할 것이다가장 간단한 방법은 C#을 사용하여 저장 프로 시저 매개 변수로 XML 파일을 전달하는 것입니다 #
StringWriter stringWriter = null;
XmlTextWriter writer = null;
try
{
stringWriter = new StringWriter(new StringBuilder());
writer = new XmlTextWriter(stringWriter);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteComment("Holiday Info");
writer.WriteStartElement("holidayInfo", "");
for (int groupIndex = 0; groupIndex < numberOfGroup; groupIndex++)
{
for (int religionIndex = 0; religionIndex < numberOfReligion; religionIndex++)
{
for (int jobStationIndex = 0; jobStationIndex < numberOfJobStation; jobStationIndex++)
{
writer.WriteStartElement("HOLIDAY", "");
writer.WriteAttributeString("intGroupID", chkGroupList.Items[groupIndex].Value.ToString());
writer.WriteAttributeString("intJobTypeId", "0");
writer.WriteAttributeString("intJobStationID", chkReligionList.Items[religionIndex].Value.ToString());
writer.WriteAttributeString("intHolidayID", ddlHolidayName.SelectedValue.ToString());
writer.WriteAttributeString("dtePermitedDate", DateTime.Now.ToShortDateString());
writer.WriteAttributeString("intReligionId", chkReligionList.Items[religionIndex].Value.ToString());
writer.WriteAttributeString("dteFromDate", txtFromDate.Text);
writer.WriteAttributeString("dteToDate", txtToDate.Text);
writer.WriteEndElement();
}
}
}
stringWriter.GetStringBuilder().ToString();
return will be what if i want to sent this file to the store procedure parameter?;
}
finally
{
if (writer != null) writer.Close();
if (stringWriter != null) stringWriter.Close();
}
반환 형식 노호 언급 XML 파일을 만들었습니다?
이
는 절차 서로 다른 접근 방식이 정당 유효 할 수 귀하의 질문에 "간단한"규정은 매우 주관적이다CREATE PROCEDURE [dbo].[sprHoliday_InsertHolidaysGroupPermission]
@intUserID INT =NULL,
@xmlHolidayPermissionDetails XML,
@insertStatus AS VARCHAR(200) OUT
AS
BEGIN
DECLARE @intEmployeeID int
IF (@intUserID IS NOT NULL)
BEGIN
SELECT @intEmployeeID = intEmployeeID From dbo.tblUserInfo WHERE tblUserInfo.intUserID = @intUserID
END
BEGIN TRANSACTION
BEGIN TRY
INSERT INTO dbo.tblEmployeeGroupPermissionHolidays
(intGroupID,
intJobTypeId,
intJobStationID,
intHolidayID,
dtePermitedDate,
intReligionId,
dteFromDate,
dteToDate)
(SELECT xmlHolidayPermissionDetails.item.value('@intGroupID[1]', 'INT'),
xmlHolidayPermissionDetails.item.value('@intJobTypeId[1]', 'INT'),
xmlHolidayPermissionDetails.item.value('@intJobStationID[1]', 'INT'),
xmlHolidayPermissionDetails.item.value('@intHolidayID[1]', 'INT'),
xmlHolidayPermissionDetails.item.value('@dtePermitedDate[1]', 'DATE'),
xmlHolidayPermissionDetails.item.value('@intReligionId[1]', 'INT'),
xmlHolidayPermissionDetails.item.value('@dteFromDate[1]', 'DATE'),
xmlHolidayPermissionDetails.item.value('@dteToDate[1]', 'DATE')
FROM @xmlHolidayPermissionDetails.nodes('//HOLIDAY') AS xmlHolidayPermissionDetails(item)
)
COMMIT
INSERT INTO dbo.tblHRDataHistory values('Insert','Holiday Permission Data Insert','tblEmployeeGroupPermissionHolidays',GETDATE(),@intEmployeeID)
SET @insertStatus = 'Holiday Permission has been iserted succesfully'
END TRY
BEGIN CATCH
Rollback
SELECT @insertStatus = 'There was an error! ' + ERROR_MESSAGE()
END CATCH
END
XML 문자열을 반환 할 수있는 것처럼 보입니다. 하지만 확실하게 SP를 게시해야합니다. –