过程或函数sp_creditnotegstinsert指定了太多参数。 [英] Procedure or function sp_creditnotegstinsert has too many arguments specified.

查看:170
本文介绍了过程或函数sp_creditnotegstinsert指定了太多参数。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

美好的一天,



当我运行我的项目时,此错误出现在我的捕获程序或函数sp_CreditNoteGSTInsert指定了太多参数。



////这是我的vb代码:



 公共 功能 InsertCommandCreditNote( ByVal  strCreditNoteNo 作为 字符串 ByVal  strCreditNoteDate  As   String ,_ 
ByVal strBranchCode 作为 字符串 ByVal strCustomerAccNo 作为 字符串 ByVal strCustomer 字符串,_
ByVal strInvoiceNo As String ByVal intInvoiceID 作为 整数,_
ByVal totalAmount 作为 Double ByVal guidUserID < span class =code-keyword>作为
Guid, ByVal roundAdjustment 作为 Double As 整数

Dim 结果作为 整数 = 0
尝试

暗淡 conn As SqlConnection(conStrBuilder.ConnectionString)

conn.Open ()

Dim myCommand As SqlCommand
myCommand = SqlCommand( sp_CreditNoteGSTInsert,conn)
myCommand.CommandType = CommandType.StoredProcedure

Dim myParamCreditNoteNo < span class =code-keyword>作为
SqlParameter
myParamCreditNoteNo = SqlParameter( strCreditNoteNo,SqlDbType.NVarChar, 25
myParamCreditNoteNo.Va lue = strCreditNoteNo
myParamCreditNoteNo.Direction = ParameterDirection.Input

Dim myParamCreditNoteDate As SqlParameter
myParamCreditNoteDate = SqlParameter( dteCreditNoteDate,SqlDbType.DateTime)
myParamCreditNoteDate.Value = strCreditNoteDate
myParamCreditNoteDate.Direction = ParameterDirection.Input

Dim myParamBranchCode 作为 SqlParameter
myParamBranchCode = SqlParameter( strBranchCode,SqlDbType.NChar, 10
myParamBranchCode.Value = strBranchCode
myParamBranchCode.Direction = ParameterDirection.Input

Dim myParamCustomerAccNo 正如 SqlParameter
myParamCustomerAccNo = SqlParameter( strCustomerAccNo,SqlDbType.NVarChar, 30
myParamCustomerAccNo.Value = strCustomerAccNo
myParamCustomerAccNo.Direction = ParameterDirection.Input

Dim myParamCustomer 正如 SqlParameter
myParamCustomer = SqlParameter( strCustomer,SqlDbType.NVarC har, 80
myParamCustomer.Value = strCustomer
myParamCustomer.Direction = ParameterDirection.Input

Dim myParamInvoiceID As SqlParameter
myParamInvoiceID = < span class =code-keyword>新 SqlParameter( intInvoiceID,SqlDbType。 Int)
myParamInvoiceID.Value = intInvoiceID
myParamInvoiceID.Direction = ParameterDirection.Input

Dim myParamTotalAmount 作为 SqlParameter
myParamTotalAmount = SqlParameter( dblCreditNoteTotalAmount,SqlDbType.Money)
myParamTotalAmount.Value = totalAmount
myParamTotalAmount.Direction = ParameterDirection.Input

Dim myParamguidUserID 作为 SqlParameter
myParamguidUserID = SqlParameter( guidUserID,SqlDbType.UniqueIdentifier)
myParamguidUserID.Value = guidUserID
myParamguidUserID.Direction = ParameterDirection.Input

Dim myParamRoundAdjustment As SqlParameter
myParamRoundAdjustment = SqlParameter( dblroundadj,SqlDbType.Money)
myParamRoun dAdjustment.Value = roundAdjustment
myParamRoundAdjustment.Direction = ParameterDirection.Input

myCommand.Parameters.Add(myParamCreditNoteNo)
mycommand.Parameters.Add(myParamCreditNoteDate)
mycommand。 Parameters.Add(myParamBranchCode)
mycommand.Parameters.Add(myParamCustomerAccNo)
mycommand.Parameters.Add(myParamCustomer)
mycommand.Parameters.Add(myParamInvoiceID)
mycommand.Parameters。添加(myParamTotalAmount)
mycommand.Parameters.Add(myParamguidUserID)
mycommand.Parameters.Add(myParamRoundAdjustment)

Dim mySqlDataAdapter As SqlDataAdapter
mySqlDataAdapter = SqlDataAdapter(myCommand)

Dim myDataSet As DataSet
mySqlDataAdapter.Fill(myDataSet, tblCreditNote

conn.Close()

result = 1

Catch ex As 异常

objTracer.WriteToLog( ex.ToString())

结束 尝试
返回结果
结束 功能







///这是我的商店程序:



  ALTER  程序 [dbo] 。[sp_CreditNoteGSTInsert] 
@ strCreditNoteNo nvarchar 25 ),
@ dteCreditNoteDate datetime
@ strBranchCode nchar 10 ),
@ strCustomerAccNo nvarchar 30 ),
@ strCustomer nvarchar 80 ),
@ intInvoiceID int
@ dblCreditNoteTotalAmount money
@guidUserID uniqueidentifier
AS
BE GIN

SET NOCOUNT ON ;

DECLARE @TotalPayment AS MONEY
SET @ TotalPayment =( SELECT SUM(round(总计, 2 )) FROM tblCreditNoteDetails_GST WHERE CreditNote_No = @ strCreditNoteNo AND IsDeleted = 0

INSERT < span class =code-keyword> INTO
tblCreditNote(
CreditNote_No
,CreditNote_Date
,CreditNote_Branch_Code
,Customer_Acc_No
,Customer_Name
, Invoice_No
,CreditNote_Total_Amount
,IsDeleted
,SysCreatedBy
,SysCreatedOn

VALUES

@ strCreditNoteNo
@ dteCreditNoteDate
@ strBranchCode
@ strCustomerAccNo
@ strCustomer
@ intInvoiceID
@ dblCreditNoteTotalAmount
0
@ guidUserID
,GETDATE ()









任何建议如何才能我修正了这个错误吗?



非常感谢。



我尝试过:



i确实尝试使用这种方法,但仍然给我回复错误。



vb.net - 程序或功能有太多的争论者ts指定 - 堆栈溢出 [ ^ ]

解决方案

嗯......如果你看:

 myCommand.Parameters.Add(myParamCreditNoteNo)
mycommand.Parameters.Add(myParamCreditNoteDate)
mycommand.Parameters.Add(myParamBranchCode)
mycommand.Parameters.Add(myParamCustomerAccNo)
mycommand.Parameters.Add(myParamCustomer)
mycommand.Parameters.Add(myParamInvoiceID)
mycommand.Parameters.Add(myParamTotalAmount)
mycommand.Parameters.Add(myParamguidUserID)
mycommand。 Parameters.Add(myParamRoundAdjustment)

9个参数

  ALTER   PROCEDURE  [dbo]。[sp_CreditNoteGSTInsert] 
@ strCreditNoteNo nvarchar 25 ),
@ dteCreditNoteDate datetime
@ strBranchCode nchar 10 ),
@ strCustomerAccNo nvarchar 30 ),
@ strCustomer nvarchar 80 ),
@ intInvoiceID int
@ dblCreditNoteTotalAmount money
@ guidUserID uniqueidentifier
AS
BEGIN

8参数。

所以要么你需要陈你的SP接受另一个参数,或者你需要在调用它时删除myParamRoundAdjustment。





BTW:我是强烈建议你看一下Parameters.AddWithValue而不是自己创建它并调用Parameters.Add - 它会让你的代码更清晰,更容易阅读。


它只是一个问题阅读你的代码

存储过程需要

  @ strCreditNoteNo   nvarchar  25 ),
@ dteCreditNoteDate datetime
@ strBranchCode nchar 10 ),
@ strCustomerAccNo nvarchar 30 ),
@ strCustomer nvarchar 80 ),
@ intInvoiceID int
@ dblCreditNoteTotalAmount money
@ guidUserID uniqueidentifier



和你的参数是

 myCommand.Parameters.Add(myParamCreditNoteNo)
mycommand.Parameters。添加(myParamCreditNoteDate)
mycommand.Parameters.Add(myParamBranchCode)
mycommand.Parameters.Add(myParamCustomerAccNo)
mycommand.Parameters.Add(myParamCustomer)
mycommand.Parameters.Add( myParamInvoiceID)
mycommand.Parameters.Add(myParamTotalAmount)
mycommand.Parameters.Add(myParamguidUserID)
mycommand.Parameters.Add(myParamRoundAdjustment)



问题是它们不匹配。





我检查过并发现你已经添加了Sql参数

 mycommand.Parameters 。添加(myParamRoundAdjustment)



来自代码,但在程序中你没有声明这个参数。


Good day,

when i run my project, this error appears in my catch "Procedure or function sp_CreditNoteGSTInsert has too many arguments specified."

////this is my vb code:

Public Function InsertCommandCreditNote(ByVal strCreditNoteNo As String, ByVal strCreditNoteDate As String, _
                                          ByVal strBranchCode As String, ByVal strCustomerAccNo As String, ByVal strCustomer As String, _
                                          ByVal strInvoiceNo As String, ByVal intInvoiceID As Integer, _
                                          ByVal totalAmount As Double, ByVal guidUserID As Guid, ByVal roundAdjustment As Double) As Integer

       Dim result As Integer = 0
       Try

           Dim conn As New SqlConnection(conStrBuilder.ConnectionString)

           conn.Open()

           Dim myCommand As New SqlCommand
           myCommand = New SqlCommand("sp_CreditNoteGSTInsert", conn)
           myCommand.CommandType = CommandType.StoredProcedure

           Dim myParamCreditNoteNo As New SqlParameter
           myParamCreditNoteNo = New SqlParameter("strCreditNoteNo", SqlDbType.NVarChar, 25)
           myParamCreditNoteNo.Value = strCreditNoteNo
           myParamCreditNoteNo.Direction = ParameterDirection.Input

           Dim myParamCreditNoteDate As New SqlParameter
           myParamCreditNoteDate = New SqlParameter("dteCreditNoteDate", SqlDbType.DateTime)
           myParamCreditNoteDate.Value = strCreditNoteDate
           myParamCreditNoteDate.Direction = ParameterDirection.Input

           Dim myParamBranchCode As New SqlParameter
           myParamBranchCode = New SqlParameter("strBranchCode", SqlDbType.NChar, 10)
           myParamBranchCode.Value = strBranchCode
           myParamBranchCode.Direction = ParameterDirection.Input

           Dim myParamCustomerAccNo As New SqlParameter
           myParamCustomerAccNo = New SqlParameter("strCustomerAccNo", SqlDbType.NVarChar, 30)
           myParamCustomerAccNo.Value = strCustomerAccNo
           myParamCustomerAccNo.Direction = ParameterDirection.Input

           Dim myParamCustomer As New SqlParameter
           myParamCustomer = New SqlParameter("strCustomer", SqlDbType.NVarChar, 80)
           myParamCustomer.Value = strCustomer
           myParamCustomer.Direction = ParameterDirection.Input

           Dim myParamInvoiceID As New SqlParameter
           myParamInvoiceID = New SqlParameter("intInvoiceID", SqlDbType.Int)
           myParamInvoiceID.Value = intInvoiceID
           myParamInvoiceID.Direction = ParameterDirection.Input

           Dim myParamTotalAmount As New SqlParameter
           myParamTotalAmount = New SqlParameter("dblCreditNoteTotalAmount", SqlDbType.Money)
           myParamTotalAmount.Value = totalAmount
           myParamTotalAmount.Direction = ParameterDirection.Input

           Dim myParamguidUserID As New SqlParameter
           myParamguidUserID = New SqlParameter("guidUserID", SqlDbType.UniqueIdentifier)
           myParamguidUserID.Value = guidUserID
           myParamguidUserID.Direction = ParameterDirection.Input

           Dim myParamRoundAdjustment As New SqlParameter
           myParamRoundAdjustment = New SqlParameter("dblroundadj", SqlDbType.Money)
           myParamRoundAdjustment.Value = roundAdjustment
           myParamRoundAdjustment.Direction = ParameterDirection.Input

           myCommand.Parameters.Add(myParamCreditNoteNo)
           mycommand.Parameters.Add(myParamCreditNoteDate)
           mycommand.Parameters.Add(myParamBranchCode)
           mycommand.Parameters.Add(myParamCustomerAccNo)
           mycommand.Parameters.Add(myParamCustomer)
           mycommand.Parameters.Add(myParamInvoiceID)
           mycommand.Parameters.Add(myParamTotalAmount)
           mycommand.Parameters.Add(myParamguidUserID)
           mycommand.Parameters.Add(myParamRoundAdjustment)

           Dim mySqlDataAdapter As SqlDataAdapter
           mySqlDataAdapter = New SqlDataAdapter(myCommand)

           Dim myDataSet As New DataSet
           mySqlDataAdapter.Fill(myDataSet, "tblCreditNote")

           conn.Close()

           result = 1

       Catch ex As Exception

           objTracer.WriteToLog(ex.ToString())

       End Try
       Return result
   End Function




///and this is my store procedure:

ALTER PROCEDURE [dbo].[sp_CreditNoteGSTInsert]
	@strCreditNoteNo nvarchar(25), 
    @dteCreditNoteDate datetime, 
    @strBranchCode nchar(10), 
    @strCustomerAccNo nvarchar(30),
    @strCustomer nvarchar(80), 
    @intInvoiceID int,
    @dblCreditNoteTotalAmount money,
    @guidUserID uniqueidentifier
AS
BEGIN

	SET NOCOUNT ON;

DECLARE @TotalPayment AS MONEY
SET @TotalPayment = (SELECT SUM(round(Total,2)) FROM tblCreditNoteDetails_GST WHERE CreditNote_No = @strCreditNoteNo AND IsDeleted = 0)

INSERT INTO tblCreditNote(
 CreditNote_No
,CreditNote_Date
,CreditNote_Branch_Code
,Customer_Acc_No
,Customer_Name
,Invoice_No
,CreditNote_Total_Amount
,IsDeleted
,SysCreatedBy
,SysCreatedOn
)
VALUES
(
 @strCreditNoteNo
,@dteCreditNoteDate
,@strBranchCode
,@strCustomerAccNo
,@strCustomer
,@intInvoiceID
,@dblCreditNoteTotalAmount
,0
,@guidUserID
,GETDATE()
)





any suggestion how can i fix this error?

Thank you very much.

What I have tried:

i did try to use this method but still return me error.

vb.net - Procedure or Function has Too many arguments specified - Stack Overflow[^]

解决方案

Well...if you look:

myCommand.Parameters.Add(myParamCreditNoteNo)
mycommand.Parameters.Add(myParamCreditNoteDate)
mycommand.Parameters.Add(myParamBranchCode)
mycommand.Parameters.Add(myParamCustomerAccNo)
mycommand.Parameters.Add(myParamCustomer)
mycommand.Parameters.Add(myParamInvoiceID)
mycommand.Parameters.Add(myParamTotalAmount)
mycommand.Parameters.Add(myParamguidUserID)
mycommand.Parameters.Add(myParamRoundAdjustment)

9 parameters

ALTER PROCEDURE [dbo].[sp_CreditNoteGSTInsert]
@strCreditNoteNo nvarchar(25), 
@dteCreditNoteDate datetime, 
@strBranchCode nchar(10), 
@strCustomerAccNo nvarchar(30),
@strCustomer nvarchar(80), 
@intInvoiceID int,
@dblCreditNoteTotalAmount money,
@guidUserID uniqueidentifier
AS
BEGIN

8 Parameters.
So either you need to change your SP to accept one more parameter, or you need to remove the myParamRoundAdjustment when you call it.


BTW: I'd strongly suggest you look at Parameters.AddWithValue instead of creating it yourself and calling Parameters.Add - it'll make your code a whole lot cleaner and easier to read.


It just a matter of reading your code
The stored procedure expect

@strCreditNoteNo nvarchar(25),
@dteCreditNoteDate datetime,
@strBranchCode nchar(10),
@strCustomerAccNo nvarchar(30),
@strCustomer nvarchar(80),
@intInvoiceID int,
@dblCreditNoteTotalAmount money,
@guidUserID uniqueidentifier


and your parameters are

myCommand.Parameters.Add(myParamCreditNoteNo)
mycommand.Parameters.Add(myParamCreditNoteDate)
mycommand.Parameters.Add(myParamBranchCode)
mycommand.Parameters.Add(myParamCustomerAccNo)
mycommand.Parameters.Add(myParamCustomer)
mycommand.Parameters.Add(myParamInvoiceID)
mycommand.Parameters.Add(myParamTotalAmount)
mycommand.Parameters.Add(myParamguidUserID)
mycommand.Parameters.Add(myParamRoundAdjustment)


The problem is that they don't match.


Hi,

I have checked and find out that you have adding Sql parameter

mycommand.Parameters.Add(myParamRoundAdjustment)


from code but in procedure you don't have declare this parameter.


这篇关于过程或函数sp_creditnotegstinsert指定了太多参数。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆