使用ODBC参数存储过程

时间:2013-10-09 08:35:30

标签: sql-server vb.net

我有一个带有odbc的存储过程的供应参数问题,这是我的程序:

Dim Command As New OdbcCommand
Dim oDataAdapter As New OdbcDataAdapter
Dim dbTrans As OdbcTransaction

Public NoNotax As String

Sub addBarangKeluar(ByVal kodeUser As String, ByVal totalJual As Long, ByVal totalDiskon As Long, ByVal totalJual2 As Long, ByVal bayar As Long, ByVal kembali As Long, ByVal kodeCust As String, ByVal odata As DataTable)
    Dim i As Integer
    Dim Nonota As String
    Dim parameter As OdbcParameter

    modKoneksi.bukaKoneksi()
    DBTrans = modKoneksi.koneksi.BeginTransaction
    command.Connection = modKoneksi.koneksidb
    command.Transaction = DBTrans
    command.CommandType = CommandType.StoredProcedure
    Command.CommandText = "addMasterBarangKeluar "

    Try
        Command.Parameters.Add("@kodeUser", OdbcType.VarChar, 10, ParameterDirection.Input).Value = kodeUser
        Command.Parameters.Add("@totalJual", OdbcType.BigInt, 20, ParameterDirection.Input).Value = totalJual
        Command.Parameters.Add("@totalDiskon", OdbcType.BigInt, 20, ParameterDirection.Input).Value = totalDiskon
        Command.Parameters.Add("@totalJual2", OdbcType.BigInt, 20, ParameterDirection.Input).Value = totalJual2
        Command.Parameters.Add("@bayar", OdbcType.BigInt, 20, ParameterDirection.Input).Value = bayar
        Command.Parameters.Add("@kembali", OdbcType.BigInt, 20, ParameterDirection.Input).Value = kembali
        Command.Parameters.Add("@kodeCustomer", OdbcType.VarChar, 20, ParameterDirection.Input).Value = kodeCust
        Command.Parameters.Add("@NoNOtanya", OdbcType.VarChar, 20)
        Command.Parameters("@NoNOtanya").Direction = ParameterDirection.Output

        Command.ExecuteNonQuery()

        Nonota = Command.Parameters("@NoNOtanya").Value
        Command.Parameters.Clear()

        Command.CommandType = CommandType.Text
        For i = 0 To odata.Rows.Count - 1
            Command.CommandText = "exec addBarangKeluarDetil '" & Guid.NewGuid.ToString & "','" & Nonota & "','" & odata.Rows(i).Item(0) & "','" & odata.Rows(i).Item(1) & "','" & odata.Rows(i).Item(4) & "','" & odata.Rows(i).Item(3) & "','" & odata.Rows(i).Item(5) & "'"
            Command.ExecuteNonQuery()
        Next
        NoNotax = Nonota
        dbTrans.Commit()
    Catch ex As Exception
        dbTrans.Rollback()
        MsgBox("Pesan Error : " + ex.Message, MsgBoxStyle.Critical, "Error !")
        NoNotax = "0"
    End Try
    Command.Parameters.Clear()
    modKoneksi.tutupKoneksi()

End Sub

当我运行此过程时,收到错误消息:

  

错误[42000] [Microsoft] [SQL Server Native Client 10.0] [SQL Server]过程或函数“addMasterBarangKeluar”需要参数'@kodeUser',它未提供。

我想我提供了所有参数。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:2)

尝试这样:

OdbcCommand ODBCCommand = new OdbcCommand("{call addMasterBarangKeluar (?)}", ODBCConnection);
ODBCCommand.CommandType = CommandType.StoredProcedure;

显示:Execute Parameterized SQL StoredProcedure via ODBC

答案 1 :(得分:-1)

以下是答案:

GL_INVALID_OPERATION

存储过程名称将以这种方式写入glVertexAttribPointer for Mysql,用于从后端调用该过程在Vb.net和C#

但是在Sql Server中我们只写:

OdbcCommand ODBCCommand = new OdbcCommand("{call addMasterBarangKeluar (?)}", ODBCConnection);

程序名称将直接写入。

这是代码正确并帮助我使用ODBC连接。