2013-10-09 4 views
0

У меня есть проблема с параметром питания для хранимой процедуры с ODBC, это моя процедура:параметров хранимой процедуры с 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 10.0] [SQL Server] Процедура или функция «addMasterBarangKeluar» ожидает параметра «@kodeUser», который не был предоставлен.

Я думаю, что я поставил все параметры.

Может ли кто-нибудь помочь мне, пожалуйста?

ответ

2

Try так:

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

Показать: Execute Parameterized SQL StoredProcedure via ODBC

+0

voila .. спасибо @WISNIEWSKI, введите этот код на "command.commandText =" {call addMasterBarangKeluar (?,?,?,?,?,?,?,?)} "" –

-1

Вот ответ:

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

сохраненное имя процедура будет написана таким образом {call addMasterBarangKeluar (?)} для Mysql для вызова процедура с заднего конца В Vb.net И C#

Но в Sql Server мы пишем только:

OdbcCommand ODBCCommand = new OdbcCommand("addMasterBarangKeluar", ODBCConnection); 

имя Процедура будет записана непосредственно.

Это код верный и помогает мне использовать соединение ODBC.

Смежные вопросы