1

同じサーバーには、照合順序が異なるデータベースはほとんどありません。 xmlの解析中に照合

CREATE TABLE #tblDocuments 
(
    Document varchar(5) COLLATE DATABASE_DEFAULT 
    ,DocCode varchar(15) COLLATE DATABASE_DEFAULT 
    ,Ammount decimal(18,2) 
    ); 

IF @@ERROR <> 0 
    GOTO ErrorHandl; 

INSERT INTO #tblDocuments 
(
    Document 
    ,DocCode 
    ,Ammount 
) 

SELECT 
    Tbl.Col.value('@DocType','varchar(3)') AS Document 
    ,Tbl.Col.value('@DocCode','varchar(15)') AS DocCode 
    ,Tbl.Col.value('@Ammount','decimal(18,2)') AS Ammount 
FROM 
    @xmlData.nodes('/Documents/document') AS Tbl(Col); 

が第1の所定の照合を持つテーブルを作成せずにXMLを解析する方法はありますように私は、XMLを解析しています。 (私はこのコードは動作しません知っている)のようなもの事前に

SELECT 
    Tbl.Col.value('@DocType','varchar(3) COLLATE DATABASE_DEFAULT') AS Document 
    ,Tbl.Col.value('@DocCode','varchar(15) COLLATE DATABASE_DEFAULT') AS DocCode 
    ,Tbl.Col.value('@Ammount','decimal(18,2) COLLATE DATABASE_DEFAULT') AS Ammount 
INTO #tblDocuments 
FROM 
    @xmlData.nodes('/Documents/document') AS Tbl(Col);enter code here 

Thxを

答えて

1

.value()機能のCOLLATE外置き:また

SELECT 
    Tbl.Col.value('@DocType','varchar(3)') COLLATE DATABASE_DEFAULT AS [Document] 
    ,Tbl.Col.value('@DocCode','varchar(15)') COLLATE DATABASE_DEFAULT AS [DocCode] 
    ,Tbl.Col.value('@Ammount','decimal(18,2)') AS Ammount 
INTO #tblDocuments 
FROM 
    @xmlData.nodes('/Documents/document') AS Tbl(Col); 
    enter code here 

を、あなたはCOLLATEを使用していません文字列データ型以外のもの(CHAR/VARCHAR/NCHAR/NVARCHAR)でも、非推奨のTEXTNTEXT dat atypes)。