SQLDataSource = "Procedure or function [Name] has too many arguments specified."
SQLDataSource = "Procedure or function [Name] has too many arguments specified."
我不确定它的 asp:SqlDataSource
控件还是我正在使用的来自 DevExpress 的 ASPxTreeList
,但是在尝试使用 [=16= 触发存储过程时我遇到了一个奇怪的错误]方法。
添加节点时我尝试将节点插入数据库
protected void TagList_NodeInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
SqlDataTagging.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
SqlDataTagging.InsertParameters.Add("ParentID", e.NewValues["ParentTag_ID"].ToString());
SqlDataTagging.InsertParameters.Add("TagName", e.NewValues["TagName_VC"].ToString());
SqlDataTagging.InsertParameters.Add("UserID", "1");
SqlDataTagging.InsertCommand = "sp_InsertTag";
SqlDataTagging.Insert();
}
然而,当我触发上面的代码时,我得到了这个错误
Procedure or function sp_InsertTag has too many arguments specified.
我的SPheader
ALTER PROCEDURE [dbo].[sp_InsertTag] (@ParentID INT, @TagName VARCHAR(100), @UserID int)
但是如您所见,SP 中有 3 个参数,C# 代码中有 3 个参数。
奇怪的是,如果我实际上 运行 SQL 通过文本
SqlDataTagging.InsertCommandType = SqlDataSourceCommandType.Text;
并用 C# 编写 SQL,它会工作...
任何人有任何想法或任何替代方案以便我可以使用存储过程?
谢谢
假设您有 SqlDataSource
和 ID SqlDataTagging
来填充树节点,如果 TagList_NodeInserting 方法触发不止一次,就会发生错误,因此在特定点 InsertParameters
集合使用存储过程中指定的 3 个以上参数进行填充。
为了减轻这种行为,我建议您在添加如下参数之前清除 InsertParameters
集合:
...
SqlDataTagging.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
SqlDataTagging.InsertParameters.Clear(); // add this line to clear InsertParameters collection before adding parameters
SqlDataTagging.InsertParameters.Add("ParentID", e.NewValues["ParentTag_ID"].ToString());
SqlDataTagging.InsertParameters.Add("TagName", e.NewValues["TagName_VC"].ToString());
SqlDataTagging.InsertParameters.Add("UserID", "1");
...
相关问题:
我不确定它的 asp:SqlDataSource
控件还是我正在使用的来自 DevExpress 的 ASPxTreeList
,但是在尝试使用 [=16= 触发存储过程时我遇到了一个奇怪的错误]方法。
添加节点时我尝试将节点插入数据库
protected void TagList_NodeInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
SqlDataTagging.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
SqlDataTagging.InsertParameters.Add("ParentID", e.NewValues["ParentTag_ID"].ToString());
SqlDataTagging.InsertParameters.Add("TagName", e.NewValues["TagName_VC"].ToString());
SqlDataTagging.InsertParameters.Add("UserID", "1");
SqlDataTagging.InsertCommand = "sp_InsertTag";
SqlDataTagging.Insert();
}
然而,当我触发上面的代码时,我得到了这个错误
Procedure or function sp_InsertTag has too many arguments specified.
我的SPheader
ALTER PROCEDURE [dbo].[sp_InsertTag] (@ParentID INT, @TagName VARCHAR(100), @UserID int)
但是如您所见,SP 中有 3 个参数,C# 代码中有 3 个参数。
奇怪的是,如果我实际上 运行 SQL 通过文本
SqlDataTagging.InsertCommandType = SqlDataSourceCommandType.Text;
并用 C# 编写 SQL,它会工作...
任何人有任何想法或任何替代方案以便我可以使用存储过程?
谢谢
假设您有 SqlDataSource
和 ID SqlDataTagging
来填充树节点,如果 TagList_NodeInserting 方法触发不止一次,就会发生错误,因此在特定点 InsertParameters
集合使用存储过程中指定的 3 个以上参数进行填充。
为了减轻这种行为,我建议您在添加如下参数之前清除 InsertParameters
集合:
...
SqlDataTagging.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
SqlDataTagging.InsertParameters.Clear(); // add this line to clear InsertParameters collection before adding parameters
SqlDataTagging.InsertParameters.Add("ParentID", e.NewValues["ParentTag_ID"].ToString());
SqlDataTagging.InsertParameters.Add("TagName", e.NewValues["TagName_VC"].ToString());
SqlDataTagging.InsertParameters.Add("UserID", "1");
...
相关问题: