2013-10-25 126 views
0

我有一个通过输出参数返回XML数据的sql server存储过程(sql server 2005)。 要连接到此数据库,首选选项是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(); 

反正我可以使它工作吗?

在此先感谢 -Neel。

回答

0

实际上你需要检查表列的数据类型,它返回的是xml数据,不管它的数据类型是xml还是其他数据类型?这取决于。

+0

当我通过Visual Studio中的服务器资源管理器连接时,xml被即时创建,并且存储过程的参数显示为Text作为参数的数据类型,我尝试使用Text,但得到相同的错误。 –

+0

我想你需要将它转换为Text(System.String),反之亦然,分别传递和检索。需要检查。 –

+0

究竟如此呢? –