过程或函数sp_creditnotegstinsert指定了太多参数。 [英] Procedure or function sp_creditnotegstinsert has too many arguments specified.
问题描述
美好的一天,
当我运行我的项目时,此错误出现在我的捕获程序或函数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
BEGIN8参数。
所以要么你需要陈你的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 BEGIN8 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 parametermycommand.Parameters.Add(myParamRoundAdjustment)
from code but in procedure you don't have declare this parameter.
这篇关于过程或函数sp_creditnotegstinsert指定了太多参数。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!