2013-09-12 2 views
4

У меня есть хранимая процедура SQL Server с параметром вывода типа xml. В моем коде coldfusion я не уверен, какой cfsqltype использовать для переменной xml. Я попытался с помощью cf_sql_varchar в следующем коде:Ошибка вывода SQL-запроса SQL xml?

<cfprocparam cfsqltype="cf_sql_varchar" type="out" variable="result"> 

Но я получаю следующее сообщение об ошибке:

Implicit conversion from data type xml to varchar is not allowed. Use the CONVERT function to run this query.

Есть ли способ иметь дело с выходной XML-парами в ColdFusion без изменения хранимого процедура для возврата varchar вместо xml?

+1

вы должны иметь возможность использовать 'cf_sql_longvarchar' Я никогда не понимал, почему' cf_sql_varchar' не работает –

+2

@MattBusche - 'cf_sql_varchar' для меньших строк. Тип xml больше похож на 'text' или' varchar (max) ', с точки зрения емкости (и того, как он хранится), поэтому он сопоставляется с' cf_sql_longvarchar'. – Leigh

+0

Просто поближе посмотрел w/CF9 и увидел, что он работает для параметров 'in', но не' out'. Я знаю, что JDBC 4 поддерживает тип SQLXML, но он не похож на поддержку в CF. * Ничего не работает cfsqltypes. Единственный способ, с помощью которого он работал, - использовать cfquery, то есть ' DECLARE @xml xml EXEC procedureName @xml OUTPUT SELECT @xml AS Результат', что немного kludgey imo. Но это единственный вариант, который я могу придумать, кроме того, что результат был получен как varchar. – Leigh

ответ

1

К сожалению, ответ на ваш вопрос - нет. Драйвер не поддерживает чтение выходных данных хранимых процедур типа данных XML. Если вам нужно использовать тип данных XML в качестве выходного параметра, вы должны сначала преобразовать тип данных XML в VARCHAR или LONGVARCHAR в хранимую процедуру, прежде чем ее можно будет прочитать.

+0

Да, это, казалось, общий консенсус, основанный на их первоначальных результатах и ​​моих более поздних тестах. Вы видели какую-либо официальную документацию по этому поводу или это просто наблюдение? – Leigh

+0

В adobe.com docs для CF https://learn.adobe.com/wiki/display/coldfusionen/cfqueryparam, таблица с отображением типов данных ColdFusion SQL с типами JDBC SQL, вы можете видеть, что XML там нет. –

+0

Да, я знаю матрицу параметров запроса. Но из моих тестов он, очевидно, может взаимодействовать с xml - несколько (т.е. как строки). В противном случае мой пример cfquery выше не будет работать. Я просто надеялся, что есть что-то более определенное, как утверждение о том, на каком уровне JDBC поддерживают драйверы: 2, 3 или 4. Единственное, что я могу найти в документах, это то, что это драйвер типа 4 (Duh! это тип 4, отличный от типа Access). – Leigh

Смежные вопросы