2013-10-25 2 views
0

У меня есть хранимая процедура сервера sql (sql server 2005), которая возвращает данные XML через выходной параметр. Для подключения к этой базе данных предпочтительным вариантом является System DSN, поэтому я использую классы ODBC - ODBCConnection, ODBCCommand. Проблема в том, какой тип данных я использую: NChar, char, Text, NText, VarChar, NVarChar, я всегда получаю ту же ошибку, когда я вызываю ODBCCommand :: ExecuteNonQuery:C#, ODBC, Sql Server и xml тип данных

«Тип данных 0x63 - это устаревший большой объект, или LOB, но отмечен как выходной параметр. Устаревшие типы не поддерживаются в качестве выходных параметров. Вместо этого используйте текущие большие типы объектов. "

Я звоню хранимую процедуру, как показано ниже:

 OdbcCommand cmd = new OdbcCommand("{CALL FetchTasks(?)}", conn); 
    cmd.CommandType = CommandType.StoredProcedure; 

    OdbcParameter param1 = new OdbcParameter(); 
    param1.ParameterName = "@TaskXML"; 
    param1.OdbcType = OdbcType.Text; //I have tried nchar, char, text, ntext 
    param1.Size = 2048; 
    param1.Value = "<Root></Root>"; 
    param1.Direction = ParameterDirection.Output; 
    cmd.Parameters.Add(param1); 

    cmd.ExecuteNonQuery(); 

есть в любом случае я могу заставить его работать?

Заранее благодарен -Ний.

ответ

0

На самом деле вам нужно проверить тип данных столбца таблицы, который возвращает данные XML, является ли его тип данных xml или другим? Это зависит от этого.

+0

xml создан на лету, а параметр хранимой процедуры отображается как текст как тип данных для параметра при подключении через серверный проводник в visual studio, и я попытался с текстом, но получаю такую ​​же ошибку. –

+0

Я думаю, что вы необходимо преобразовать его в текст (System.String) и наоборот при передаче и извлечения соответственно. Нужно проверить. –

+0

как именно так? –

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