用cast 或者 convert
CAST 和 CONVERT
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。
从ntext到char是显式转换.cast (你的变量或字段 as char(??)) CONVERTCONVERT (char(??),变量或字段)

解决方案 »

  1.   

    参看msdn上关于cast和convert的介绍,里面有各种类型的转换图表。
      

  2.   

    在C#里调用的。
    public void DoDetailNew(string user_id,XmlDocument XmlDoc)
    {


    ErrorMessages Err=new ErrorMessages();


    int ReturnValue=0;

    SQLRun objSqlRun=new SQLRun();
    string[,] Param=new string[2,5]; Param[0,0]="Return_Value";
    Param[0,1]="I";
    Param[0,2]="Return";
    Param[0,3]="4";
    Param[0,4]="0";

    Param[1,0]="xmldoc";
    Param[1,1]="LNC";
    Param[1,2]="In";
    Param[1,3]="50000";
    Param[1,4]=XmlDoc.InnerXml.ToString();
    try
    {
    objSqlRun.SQLRunCommandSP("SP_DoDetailNew",Param);
    ReturnValue=int.Parse(Param[0,4]);
    if(ReturnValue!=0)
    {
    //ErrorMessages Err=new ErrorMessages();
    Err.TrackSPError(ReturnValue);
    return;
    }

    }
    catch(OleDbException ex)
    {
    //ErrorMessages Err=new ErrorMessages();
    Err.TrackError(ex);
    return;
    }

    }
      

  3.   

    看不懂C#的代码,不过
    Param[1,4]=XmlDoc.InnerXml.ToString();表示你是给存储过程定义的是字符型的参数吧?
      

  4.   

    存储过程多写了个参数:
    CREATE Procedure SP_DoDetailNew
        @user_id char(10),
        @xmldoc ntext
    AS
    把 @user_id char(10),去掉就行了,C#里只有一个XML的输入参数和一个输出,问题解决。