我有一个带参数的存储过程:
ALTER PROCEDURE [dbo].[prAddSortament]
@Name varchar(255),
@ProcessingId varchar(35),
@ShapeId varchar(35),
@GostId varchar(35),
@PartOfId varchar(35),
@DescrArr varchar(max),--varbinary,
@tsVal varchar(max),
@SM varchar(max)
AS
BEGIN
我从我的程序那里调用它:
using (SqlConnection con = new SqlConnection(Properties.Settings.Default.MiSConStr))
{
SqlCommand cmd = new SqlCommand("dbo.prAddSortament", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Name", sort.Name);
cmd.Parameters.AddWithValue("@ProcessingId", sort.Processing.ObjectId);
cmd.Parameters.AddWithValue("@ShapeId", sort.Shap.ObjectId);
cmd.Parameters.AddWithValue("@GostId", sort.Gost);
cmd.Parameters.AddWithValue("@PartOfId", sort.PartOf);
cmd.Parameters.AddWithValue("@DescrArr", sort.Description);
cmd.Parameters.AddWithValue("@tsVal", ts);
cmd.Parameters.AddWithValue("@SM", sortMat);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
开cmd.ExeccutrNonQuery();
我有例外
程序或函数prAddSortament指定了太多参数。
有人能帮助我吗?
答案 0 :(得分:1)
如果参数数量相同,请尝试检查其类型。看起来参数的数据类型存在一些不匹配。
答案 1 :(得分:1)
添加以下代码,它将指定您要添加的存储过程: -
cmd.CommandText = "prAddSortament";
此处http://www.sql-server-helper.com/error-messages/msg-8144.aspx详细说明此类错误的其他信息: -
SQL Server错误消息 - 消息8144
错误消息:服务器:消息8144,级别16,状态2,存储过程 过程或函数名称,行0过程或函数已存储 过程或函数名称指定了太多参数。
<强>原因:强>
如消息所述,遇到此错误 将参数或参数传递给函数或存储过程 这超出了函数或存储过程的期望。
To illustrate, let’s say you have the following function definition:
> CREATE FUNCTION [dbo].[ufn_Concat] ( @pString1 VARCHAR(10), @pString2
> VARCHAR(10) ) RETURNS VARCHAR(20) AS BEGIN
> RETURN ISNULL(@pString1 + ' ', '') + ISNULL(@pString2, '') END
This function expects only 2 arguments, namely @pString1 and
> @pString2. To use this function, you do the following: SELECT
> [dbo].[ufn_Concat] ( [FirstName], [LastName] ) AS [FullName] FROM
> [dbo].[Customers]
The error will be encountered you pass more than 2 arguments or
> parameters to the function, as follows: SELECT [dbo].[ufn_Concat] (
> [FirstName], [MiddleName], [LastName] ) AS [FullName] FROM
> [dbo].[Customers]
>
服务器:消息8144,级别16,状态2,行1过程或功能 dbo.ufn_Concat指定了太多参数。
<强>解决方案/解决方法:强>
为避免发生此错误,请务必确保通过 存储过程或函数的相同数量的参数 期待。要知道存储过程所期望的参数,您 可以使用sp_help系统存储过程并传递名称 存储过程作为参数。
答案 2 :(得分:0)
这是我的错。我正在使用两个版本的数据库,并且在连接字符串中指定了旧版本的DB,其中存在dbo.prAddSortament但参数较少。