执行存储过程(带Input,output,RetrunValue)
【功能:写一个公共的Web Services方法,可以执行返回带output/ReturnValue的存储过程。】
【代码】: //执行存储过程,带Input,output,ReturnValue
//SqlParameter当参数传递 [ref]
[WebMethod(Description="执行存储过程,支持Input,output,ReturnValue", EnableSession=true)]
public bool ExecProcedure(string procedureName, ref System.Data.SqlClient.SqlParameter[] arrPars)
{
return MySQLHelp.ExecProcedure(procedureName, arrPars);
}
【错误】
System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: 类型 System.Data.SqlTypes.SqlString 不能用在此上下文中。要将 System.Data.SqlTypes.SqlString 用作参数、返回类型或者类或结构的成员,该参数、返回类型或成员必须声明为类型 System.Data.SqlTypes.SqlString(它不能是对象)。类型 System.Data.SqlTypes.SqlString 的对象不能用在非类型化的集合如 ArrayList 中。
在 System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name, String ns, Object o, Boolean xsiType)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_SqlParameter(String n, String ns, SqlParameter o, Boolean isNullable, Boolean needType)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write40_ExecProcedureResponse(Object[] p)
在 Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer61.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle)
在 System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
在 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
在 System.Web.Services.Protocols.WebServiceHandler.Invoke()
--- 内部异常堆栈跟踪的结尾 ---
类型 System.Data.SqlTypes.SqlString 的对象不能用在非类型化的集合!!!!
大家没有遇到这个功能需求,如何来解决的。
谢谢!
[解决办法]
System.Data.SqlClient.SqlParameter[]这个需要序列化吧
[解决办法]
System.Data.SqlClient.SqlParameter[]
这个得用客户端代理类里的SqlParameter。
[解决办法]
要将 System.Data.SqlTypes.SqlString 用作参数、返回类型或者类或结构的成员,该参数、返回类型或成员必须声明为类型 System.Data.SqlTypes.SqlString(它不能是对象)
-------------------
同意的它的DbType也要用 WindowsFormsApplication1.WebService_SQLHelp 下的DBType