0

这就是我在 ms sql 中的做法

   DECLARE @xmlData XML = N'<provinces>
    <provinceid>1</provinceid>
    <provincename>Queensland</provincename>
    <shortcode>QL</shortcode>
    <countryid>112</countryid>
    </provinces>';
UPDATE rel.mProvince
SET ProvinceName = X.provincename,
ShortCode = X.shortcode,
CountryID = X.countryid
FROM rel.mProvince INNER JOIN 
(SELECT c.value('provinceid[1]','int') [provinceid],
c.value('provincename[1]','nvarchar(50)') [provincename],
c.value('shortcode[1]','nvarchar(10)') [shortcode],
c.value('countryid[1]','int') [countryid]
FROM @xmlData.nodes('//provinces') t(c)) X ON rel.mProvince.ProvinceID = X.provinceid
WHERE rel.mProvince.ProvinceID=X.provinceid;

现在我想更新 Oracle 中的表 mProvince 下面是更新查询

DECLARE xmlData XMLTYPE = XMLTYPE('<provinces>
    <provinceid>1</provinceid>
    <provincename>Queensland</provincename>
    <shortcode>QL</shortcode>
    <countryid>112</countryid>
    </provinces>');    

        UPDATE mProvince 
        SET ProvinceName = X.provincename, 
        ShortCode = X.shortcode, 
        CountryID = X.countryid 
        FROM mProvince INNER JOIN (SELECT X.* 
        FROM XMLTABLE('/NewDataSet'  
        PASSING xmlData  
        COLUMNS "provinceid" NUMBER PATH 'provinceid',  
        "provincename" NVARCHAR2(50) PATH 'provincename',  
        "shortcode" NVARCHAR2(10) PATH 'shortcode', 
        "countryid" NUMBER PATH 'countryid')) X  
        ON mProvince.ProvinceID = X.provinceid 
        WHERE mProvince.ProvinceID=X.provinceid;

这在oracle中失败了,有什么问题。

4

0 回答 0