こんにちは、次のストアド プロシージャを使用して、xml データをテーブルに挿入しています。
PROCEDURE [dbo].[ExpertSystem_SET_QuestionData]
@XmlQue NVARCHAR(MAX)
AS
set nocount on
DECLARE @XmlHdl INT
BEGIN
SET @XmlQue=N''+@XmlQue
EXEC sp_xml_preparedocument @XmlHdl OUTPUT,@XmlQue
INSERT INTO ExpertSystem_Master
SELECT QIdx,@TemplateId,QDetailsx,IsYesx,IsNox,Eligibleyesx,Eligiblenox,0,0
FROM
OPENXML(@XmlHdl,'/Template/QueInfo',1)
WITH
( QIdx INT '@QId',
QDetailsx Ntext '@QDetails',
IsYesx Ntext '@IsYes',
IsNox Ntext '@IsNo',
Eligibleyesx CHAR(1) '@Eligibleyes',
Eligiblenox CHAR(1) '@Eligibleno'
)
END
この場合、値をパラメーターに次のように渡します
ExpertSystem_SET_QuestionData '<?xml version="1.0" encoding="UTF-16"?><Template TId="1"><QueInfo QId="1" QDetails="Are you " IsYes="Yes" IsNo="No" Eligibleyes="Y" Eligibleno="N"/><QueInfo QId="2" QDetails=" राज्य " IsYes="Yes" IsNo="No" Eligibleyes="Y" Eligibleno="N"/><QueAns QId="1" isMsgFlag="N" Msg="you are not Eligible"/><QueAns QId="2" isMsgFlag="N" Msg="you are not eligible"/></Template>'
データは挿入されますが、?????として挿入されます。** "raज्य"** の代わりに。
プロシージャを次のように呼び出しているとき
ExpertSystem_SET_QuestionData 'N<?xml version="1.0" encoding="UTF-16"?><Template TId="1"><QueInfo QId="1" QDetails="Are you Domicile of maharashtra" IsYes="Yes" IsNo="No" Eligibleyes="Y" Eligibleno="N"/><QueInfo QId="2" QDetails="Have you passed Secondary School 10th Examination?महाराष्ट्र राज्य मार्ग परिवहन महामंडळ " IsYes="Yes" IsNo="No" Eligibleyes="Y" Eligibleno="N"/><QueAns QId="1" isMsgFlag="N" Msg="you are not Eligible"/><QueAns QId="2" isMsgFlag="N" Msg="you are not eligible"/></Template>'
「XML 解析エラー 0xc00ce556 が行番号 1 の XML テキスト「N」の近くで発生しました」というエラーが表示されます。
プロシージャは実行時に呼び出されるため、@XmlQue変数にデータを渡すことができるため、この問題を解決してください。では、@XmlQue変数に「N」を追加するにはどうすればよいですか???
前もって感謝します。