0

こんにちは、次のストアド プロシージャを使用して、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」を追加するにはどうすればよいですか???

前もって感謝します。

4

1 に答える 1

0

Nxml値の前に来る必要があります。

ExpertSystem_SET_QuestionData N'<?xml version="1.0" ...
于 2012-07-18T08:45:18.133 に答える