0

xmlファイルを含むフィールド(データ型 "text")を持つテーブルがあります。試行錯誤の末、そのテーブルから完全なxmlファイルをフェッチする唯一の方法は、mssqlの「FORXML」句を使用することであることがわかりました。しかし、私の次の問題は、xmlファイルを含む列の名前が「XML_F52E2B61-18A1-11D1-B105-00805F49916B」のようになっていることです。これは、cfの無効な識別子です。

名前ではなくIDでその列にアクセスする方法はありますか、またはこの列にアクセスするための最良の方法は何ですか?

編集:私が使用しているSQLステートメントは次のとおりです。

SELECT XmlPackage
FROM LogK3OnChange 
WHERE DealerID = IsNull(<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.dealerid#">, DealerID)
AND LogID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.logid#">
FOR XML RAW

よろしく、

平子

4

3 に答える 3

2

クエリをサブクエリに埋め込む場合は、列に名前を付けることができます。

select
  (
    select *
    from YourTable
    for xml path('Row'), root('Root')
  ) as NewColumnName

あなたのクエリで:

SELECT
  (
    SELECT XmlPackage
    FROM LogK3OnChange 
    WHERE DealerID = IsNull(<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.dealerid#">, DealerID)
          AND LogID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.logid#">
    FOR XML PATH
  ) AS NewColumnName

更新:
列を XML データ型にしたい場合はtype、クエリにキーワードを追加する必要があります。それがコールドフュージョンに違いをもたらすかどうかはわかりません.

SELECT
  (
    SELECT XmlPackage
    FROM LogK3OnChange 
    WHERE DealerID = IsNull(<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.dealerid#">, DealerID)
          AND LogID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.logid#">
    FOR XML PATH, TYPE
  ) AS NewColumnName
于 2012-04-05T06:48:27.797 に答える
0

とった

<cfoutput>#myQuery["XML_F52E2B61-18A1-11D1-B105-00805F49916B"][1]#</cfoutput>

トリックを行います

于 2012-04-05T21:14:40.543 に答える