SqlException:为过程或函数XXX指定的参数太多

IMAGSE 2008-09-28 03:00:30
我现在要实现这样的功能:
一个页面,里面有GridView里面有个三个绑定列

单位名称 单位法人 单位地址

为了使这个页面能读多张表,我对表的名字做了参数处理

这里是绑定数据到GridView的方法


/// <summary>
/// 定义方法将得到的数据绑定到GV_AllInfo上
/// </summary>
private void BoundGV_AllInfo()
{
//strTableName = Request.QueryString["TableName"].ToString();
strTableName = "SpWsBjdXxk";
string unitName = txb_UnitSel.Text.ToString().Trim();
SqlParameter[] sp = new SqlParameter[2];
sp[0] = new SqlParameter("@unitName", unitName);
sp[1] = new SqlParameter("@tableName", strTableName);
DBOperator Dop = new DBOperator();
try
{
DataTable dt_unitName = Dop.GetUnitNameLike(sp);
GV_AllInfo.DataSource = dt_unitName;
GV_AllInfo.DataBind();

}

catch (SqlException se)
{
Response.Write(se.ToString());
}
}



下面是DBOperator类中的方法GetUnitNameLike
#region    查找类似单位的信息
public DataTable GetUnitNameLike(SqlParameter[] sp)
{
DataTable dt_unitName = SqlHelper.ExecuteDataset(str_con, CommandType.StoredProcedure, "UnitLikeSelect", sp).Tables[0];
return dt_unitName;
}
#endregion



我感觉这两个地方应该都没有错误。

下面就是调用的存储过程了

[code=SQLCREATE PROCEDURE UnitXinxikaSelect(@unitName varchar(50),@tableName char(20))
as

begin
declare @sql varchar(1000);
set @sql='select * from T_UnitInformation as a inner join ' +@tableName+' as b on a.UI_ID = b.unitID where UI_Name like %' + @unitName +'%';
exec(@sql);
end
GO[/code]

我感觉就错在这里,可是具体错在哪个地方就不知道了。

期间我用sql语句直接在查询分析器中测试,sql语句是可以通过的。。

sql语句如下:

select * from T_UnitInformation as a inner join SpWsBjdXxk as b on a.UI_ID = b.unitID where UI_Name like '%'+ '' + '%'


请大家帮下忙吧!~~

最后预祝大家国庆节快乐~
...全文
187 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IMAGSE 2008-09-28
  • 打赏
  • 举报
回复
谢谢二位的回答,问题我找到了,是我调用方法时候,名字写成了和这个类似的方法导致的~

谢谢
IMAGSE 2008-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jinjazz 的回复:]
sqlhelper有问题吧,只要调用传入两个参数就可以了
[/Quote]

我就是传的两个参数啊,sqlhelper没有问题

近身剪----呵呵,剪咬刃,你也玩Diablo哦,我最喜欢用刺客了。。

等Diablo3等的我都快疯了~ 呵呵
水族杰纶 2008-09-28
  • 打赏
  • 举报
回复
--TRY
CREATE PROCEDURE UnitXinxikaSelect(@unitName varchar(50),@tableName char(20))
as

begin
declare @sql varchar(1000);
set @sql='select * from T_UnitInformation as a inner join ' +@tableName+' as b on a.UI_ID = b.unitID where UI_Name like ''%' + @unitName +'%''';
exec(@sql);
end
GO
jinjazz 2008-09-28
  • 打赏
  • 举报
回复
sqlhelper有问题吧,只要调用传入两个参数就可以了

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧