我只是调用一个存储过程,它是用SQL Server 2005开发的。 这里是我存储过程的签名。问题与SqlParameter和数据类型
CREATE PROCEDURE [dbo].[GenericSearch]
(
@ModuleName VARCHAR(100),
@ViewName VARCHAR(100),
@WhereClause_XML XML,
@LogicalOperator VARCHAR(3)
)
AS
BEGIN
END
我只是从我的前端调用这个存储过程并传递价值像
string[] Tables = new string[] { "TPMaster" };
SqlParameter[] cparams = new SqlParameter[4];
SqlParameter param;
param = new SqlParameter("@ModuleName", ModuleName);
param.DbType = DbType.String;
cparams[0] = param;
param = new SqlParameter("@ViewName", DataSource);
param.DbType = DbType.String;
cparams[1] = param;
param = new SqlParameter("@WhereClause_XML", strXml);
param.DbType = DbType.Xml;
cparams[2] = param;
param = new SqlParameter("@LogicalOperator", (rbAnd.Checked ? "AND" : "OR"));
param.DbType = DbType.String;
cparams[3] = param;
ds = Business.Common.GetDataSet("GenericSearch", cparams, Tables);
在这里,我指定param.DbType
字符串为我所有varchar
数据类型存储过程和一个XML数据类型。
我得到一个错误
过程需要 类型的参数“@statement 'NTEXT/NCHAR/nvarchar的'
我只是不明白是什么原因造成的错误。请告诉我如何解决它。
嗯看起来很奇怪,我会仔细检查你的应用程序肯定是指向正确的过程,甚至是正确的数据库。尝试删除proc,你的应用程序会不会在那里呻吟? – 2012-01-06 13:14:06
'@ statement'从哪里来? – 2012-01-06 13:15:29
它在错误信息中。 – Thomas 2012-01-06 13:18:04