ORA-01008:并非所有变量都绑定

时间:2016-07-18 09:28:37

标签: vb.net

我想执行以下代码。我无法将csv文件插入到Oracle数据库中。代码抛出" ORA-01008:并非所有变量绑定"例外。有人可以帮我这个我的csv文件第一行看起来像下面

27.06.2016;03.07.2016;1919959100;Pl-Auf  ;081933436-9001;F-600953.01-0021.IR.ALDL-M/01;0030;SWE40700;26.11.2015;26.11.2015;      30 

我将SAP_ZPCP12 TABLE中的列定义为

ID                   NUMBER
VONDATUM             DATE
BISDATUM             DATE
AUFTRAG              NUMEBER
DISPOEL              VARCHAR2
MATERIAL             VARCHAR2
BEZEICHNUNG          VARCHAR2
VRG                  VARCHAR2
ARBPLATZ             VARCHAR2
TERMSTART            DATE
TERMENDE             DATE
VORMENGE             NUMBER



Imports System.Data.OleDb
Imports System.IO

Module Module1

    Public Function csvToDatatable(ByVal filename As String, ByVal separator As String)

        Dim dt As New System.Data.DataTable
        Dim firstLine As Boolean = True
        If IO.File.Exists(filename) Then
            Using sr As New StreamReader(filename)
                dt.Columns.Add("VONDATUM")
                dt.Columns.Add("BISDATUM")
                dt.Columns.Add("AUFTRAG")
                dt.Columns.Add("DISPOEL")
                dt.Columns.Add("MATERIAL")
                dt.Columns.Add("BEZEICHNUNG")
                dt.Columns.Add("VRG")
                dt.Columns.Add("ARBPLATZ")
                dt.Columns.Add("TERMSTART")
                dt.Columns.Add("TERMENDE")
                dt.Columns.Add("VORMENGE")

                While Not sr.EndOfStream
                    Dim data() As String = sr.ReadLine.Split(separator)
                    dt.Rows.Add(data.ToArray)
                End While
            End Using
        End If
        Return dt

    End Function
    Sub Main()
        Dim path As String = "C:\Users\bhogapud\Desktop\SAP_Transfer\EP1000022179500001final.csv"


        Dim finaldt As DataTable = csvToDatatable(path, ";")

        Dim oledbcn As New OleDbConnection(My.Settings.SQL_Server)
        Dim cmd As New OleDbCommand()
        cmd.CommandType = CommandType.Text

        For Each Row As DataRow In finaldt.Rows
            cmd.CommandText = "Insert into SAP_ZPCP12(ID, VONDATUM, BISDATUM, AUFTRAG, DISPOEL,MATERIAL, BEZEICHNUNG, VRG, ARBPLATZ, TERMSTART, TERMENDE, VORMENGE)
                               values (SEQ_SAP_ZPCP12.NEXTVAL, :VONDATUM, :BISDATUM, :AUFTRAG, :DISPOEL, :MATERIAL, :BEZEICHNUNG, :VRG, :ARBPLATZ, :TERMSTART, :TERMENDE, :VORMENGE )"
            cmd.Parameters.Add(":VONDATUM", OleDbType.Date).Value = DateTime.ParseExact(Row(0), "dd.MM.yyyy", Nothing)
            cmd.Parameters.Add(":BISDATUM", OleDbType.Date).Value = DateTime.ParseExact(Row(1), "dd.MM.yyyy", Nothing)
            cmd.Parameters.Add(":AUFTRAG", OleDbType.Integer).Value = Row(2)
            cmd.Parameters.Add(":DISPOEL", OleDbType.VarChar).Value = Row(3)
            cmd.Parameters.Add(":MATERIAL", OleDbType.VarChar).Value = Row(4)
            cmd.Parameters.Add(":BEZEICHNUNG", OleDbType.VarChar).Value = Row(5)
            cmd.Parameters.Add(":VRG", OleDbType.VarChar).Value = Row(6)
            cmd.Parameters.Add(":ARBPLATZ", OleDbType.VarChar).Value = Row(7)
            cmd.Parameters.Add(":TERMSTART", OleDbType.Date).Value = DateTime.ParseExact(Row(8), "dd.MM.yyyy", Nothing)
            cmd.Parameters.Add(":TERMENDE", OleDbType.Date).Value = DateTime.ParseExact(Row(9), "dd.MM.yyyy", Nothing)
            cmd.Parameters.Add(":VORMENGE", OleDbType.Integer).Value = Row(10)
            cmd.Connection = oledbcn
            oledbcn.Open()
            cmd.ExecuteNonQuery()
            cmd.Dispose()
            oledbcn.Close()

        Next
    End Sub

End Module

1 个答案:

答案 0 :(得分:0)

我用“?”替换命名变量代码工作

cmd.CommandText = "Insert into SAP_ZPCP12(ID, VONDATUM, BISDATUM, AUFTRAG, DISPOEL,MATERIAL, BEZEICHNUNG, VRG, ARBPLATZ, TERMSTART, TERMENDE, VORMENGE)
                           values (SEQ_SAP_ZPCP12.NEXTVAL,?,?,?,?,?,?,?,?,?,?,? )"
        cmd.Parameters.Add("?", OleDbType.Date).Value = DateTime.ParseExact(Row(0), "dd.MM.yyyy", Nothing)
        cmd.Parameters.Add("?", OleDbType.Date).Value = DateTime.ParseExact(Row(1), "dd.MM.yyyy", Nothing)
        cmd.Parameters.Add("?", OleDbType.VarChar).Value = Row(2)
        cmd.Parameters.Add("?", OleDbType.VarChar).Value = Row(3)
        cmd.Parameters.Add("?", OleDbType.VarChar).Value = Row(4)
        cmd.Parameters.Add("?", OleDbType.VarChar).Value = Row(5)
        cmd.Parameters.Add("?", OleDbType.VarChar).Value = Row(6)
        cmd.Parameters.Add("?", OleDbType.VarChar).Value = Row(7)
        cmd.Parameters.Add("?", OleDbType.Date).Value = DateTime.ParseExact(Row(8), "dd.MM.yyyy", Nothing)
        cmd.Parameters.Add("?", OleDbType.Date).Value = DateTime.ParseExact(Row(9), "dd.MM.yyyy", Nothing)
        cmd.Parameters.Add("?", OleDbType.VarChar).Value = Row(10)