Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET-清除传递给Oracle存储过程的参数_Vb.net_Oracle_Parameters_Procedure - Fatal编程技术网

VB.NET-清除传递给Oracle存储过程的参数

VB.NET-清除传递给Oracle存储过程的参数,vb.net,oracle,parameters,procedure,Vb.net,Oracle,Parameters,Procedure,我有一个将文件内容插入Oracle DB的sub。 对于一个文件,一切正常,但对于多个文件,过程参数保留旧值,但也保留新值;因此,在第二个文件中,我有8个参数,而不是4个参数 下面是一个代码示例: For Each oFile As String In Directory.GetFiles("D:\files") Dim header() As String = IO.File.ReadAllLines(oFile) If header(0) = "<delivery_note>"

我有一个将文件内容插入Oracle DB的sub。 对于一个文件,一切正常,但对于多个文件,过程参数保留旧值,但也保留新值;因此,在第二个文件中,我有8个参数,而不是4个参数

下面是一个代码示例:

For Each oFile As String In Directory.GetFiles("D:\files")

Dim header() As String = IO.File.ReadAllLines(oFile)
If header(0) = "<delivery_note>" Then

    XML_File = XmlReader.Create(oFile, New XmlReaderSettings())
    DataSet.ReadXml(XML_File)

    For i As Integer = 0 To DataSet.Tables(0).Rows.Count - 1

        cmd.Parameters.Add("p_delnote_id", OracleDbType.Int64).Direction = ParameterDirection.Input
        cmd.Parameters("p_delnote_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(0))

        cmd.Parameters.Add("p_order_id", OracleDbType.Int64).Direction = ParameterDirection.Input
        cmd.Parameters("p_order_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(1))

        cmd.Parameters.Add("p_product_id", OracleDbType.Int64).Direction = ParameterDirection.Input
        cmd.Parameters("p_product_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(2))

        cmd.Parameters.Add("p_quantity", OracleDbType.Int64).Direction = ParameterDirection.Input
        cmd.Parameters("p_quantity").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(3))

        cmd.Parameters.Add("p_confirm", OracleDbType.Int16).Direction = ParameterDirection.Output

        cmd.CommandText = "pkg_erp.insert_delnote"
        cmd.CommandType = CommandType.StoredProcedure

        temp = cmd.ExecuteNonQuery()

        result = cmd.Parameters("p_confirm").Value.ToString()

        ...

    Next

End If

Next
作为Directory.GetFiles(“D:\files”)中的字符串用于每个文件
Dim header()格式为String=IO.File.ReadAllLines(oFile)
如果标题(0)=“”,则
XML_File=XmlReader.Create(文件,新的XmlReaderSettings())
DataSet.ReadXml(XML\u文件)
对于DataSet.Tables(0).Rows.Count-1,i为整数=0
cmd.Parameters.Add(“p_delnote_id”,OracleDbType.Int64)。Direction=ParameterDirection.Input
cmd.Parameters(“p_delnote_id”).Value=Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(0))
cmd.Parameters.Add(“p\u order\u id”,OracleDbType.Int64).Direction=ParameterDirection.Input
cmd.Parameters(“p_order_id”).Value=Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(1))
cmd.Parameters.Add(“产品id”,OracleDbType.Int64).Direction=ParameterDirection.Input
cmd.Parameters(“p_product_id”).Value=Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(2))
cmd.Parameters.Add(“p_数量”,OracleDbType.Int64).Direction=ParameterDirection.Input
cmd.Parameters(“p_数量”).Value=Convert.ToInt32(数据集.表格(0).行(i).项(3))
cmd.Parameters.Add(“p_确认”,OracleDbType.Int16).Direction=ParameterDirection.Output
cmd.CommandText=“包装企业资源计划插入注释”
cmd.CommandType=CommandType.storedProcess
temp=cmd.ExecuteNonQuery()
结果=cmd.Parameters(“p_confirm”).Value.ToString()
...
下一个
如果结束
下一个
在通过“files”文件夹进行的第一次迭代中,它为过程“insert_delnote”生成一个包含4个参数的列表。 在第二次迭代中,它添加了另外4个参数,而不是仅覆盖初始4个参数的值

有谁能告诉我,在通过“文件”目录的每次迭代中,我怎么只能有4个参数


谢谢,

您只需在循环之前创建一次参数,然后就可以在内部循环中设置值:

cmd.CommandText = "pkg_erp.insert_delnote"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("p_delnote_id", OracleDbType.Int64).Direction = ParameterDirection.Input
cmd.Parameters.Add("p_order_id", OracleDbType.Int64).Direction = ParameterDirection.Input
cmd.Parameters.Add("p_product_id", OracleDbType.Int64).Direction = ParameterDirection.Input
cmd.Parameters.Add("p_quantity", OracleDbType.Int64).Direction = ParameterDirection.Input
cmd.Parameters.Add("p_confirm", OracleDbType.Int16).Direction = ParameterDirection.Output

For Each oFile As String In Directory.GetFiles("D:\files")

    Dim header() As String = IO.File.ReadAllLines(oFile)
    If header(0) = "<delivery_note>" Then

        XML_File = XmlReader.Create(oFile, New XmlReaderSettings())
        DataSet.ReadXml(XML_File)

        For i As Integer = 0 To DataSet.Tables(0).Rows.Count - 1
            cmd.Parameters("p_delnote_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(0))
            cmd.Parameters("p_order_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(1))
            cmd.Parameters("p_product_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(2))
            cmd.Parameters("p_quantity").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(3))
            temp = cmd.ExecuteNonQuery()
            result = cmd.Parameters("p_confirm").Value.ToString()

            ...

        Next
    End If
Next
cmd.CommandText=“打包”\u erp.insert\u delnote”
cmd.CommandType=CommandType.storedProcess
cmd.Parameters.Add(“p_delnote_id”,OracleDbType.Int64)。Direction=ParameterDirection.Input
cmd.Parameters.Add(“p\u order\u id”,OracleDbType.Int64).Direction=ParameterDirection.Input
cmd.Parameters.Add(“产品id”,OracleDbType.Int64).Direction=ParameterDirection.Input
cmd.Parameters.Add(“p_数量”,OracleDbType.Int64).Direction=ParameterDirection.Input
cmd.Parameters.Add(“p_确认”,OracleDbType.Int16).Direction=ParameterDirection.Output
对于目录.GetFiles(“D:\files”)中的每个文件,将其作为字符串
Dim header()格式为String=IO.File.ReadAllLines(oFile)
如果标题(0)=“”,则
XML_File=XmlReader.Create(文件,新的XmlReaderSettings())
DataSet.ReadXml(XML\u文件)
对于DataSet.Tables(0).Rows.Count-1,i为整数=0
cmd.Parameters(“p_delnote_id”).Value=Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(0))
cmd.Parameters(“p_order_id”).Value=Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(1))
cmd.Parameters(“p_product_id”).Value=Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(2))
cmd.Parameters(“p_数量”).Value=Convert.ToInt32(数据集.表格(0).行(i).项(3))
temp=cmd.ExecuteNonQuery()
结果=cmd.Parameters(“p_confirm”).Value.ToString()
...
下一个
如果结束
下一个

您只需在循环之前创建一次参数,然后就可以在内部循环中设置值:

cmd.CommandText = "pkg_erp.insert_delnote"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("p_delnote_id", OracleDbType.Int64).Direction = ParameterDirection.Input
cmd.Parameters.Add("p_order_id", OracleDbType.Int64).Direction = ParameterDirection.Input
cmd.Parameters.Add("p_product_id", OracleDbType.Int64).Direction = ParameterDirection.Input
cmd.Parameters.Add("p_quantity", OracleDbType.Int64).Direction = ParameterDirection.Input
cmd.Parameters.Add("p_confirm", OracleDbType.Int16).Direction = ParameterDirection.Output

For Each oFile As String In Directory.GetFiles("D:\files")

    Dim header() As String = IO.File.ReadAllLines(oFile)
    If header(0) = "<delivery_note>" Then

        XML_File = XmlReader.Create(oFile, New XmlReaderSettings())
        DataSet.ReadXml(XML_File)

        For i As Integer = 0 To DataSet.Tables(0).Rows.Count - 1
            cmd.Parameters("p_delnote_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(0))
            cmd.Parameters("p_order_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(1))
            cmd.Parameters("p_product_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(2))
            cmd.Parameters("p_quantity").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(3))
            temp = cmd.ExecuteNonQuery()
            result = cmd.Parameters("p_confirm").Value.ToString()

            ...

        Next
    End If
Next
cmd.CommandText=“打包”\u erp.insert\u delnote”
cmd.CommandType=CommandType.storedProcess
cmd.Parameters.Add(“p_delnote_id”,OracleDbType.Int64)。Direction=ParameterDirection.Input
cmd.Parameters.Add(“p\u order\u id”,OracleDbType.Int64).Direction=ParameterDirection.Input
cmd.Parameters.Add(“产品id”,OracleDbType.Int64).Direction=ParameterDirection.Input
cmd.Parameters.Add(“p_数量”,OracleDbType.Int64).Direction=ParameterDirection.Input
cmd.Parameters.Add(“p_确认”,OracleDbType.Int16).Direction=ParameterDirection.Output
对于目录.GetFiles(“D:\files”)中的每个文件,将其作为字符串
Dim header()格式为String=IO.File.ReadAllLines(oFile)
如果标题(0)=“”,则
XML_File=XmlReader.Create(文件,新的XmlReaderSettings())
DataSet.ReadXml(XML\u文件)
对于DataSet.Tables(0).Rows.Count-1,i为整数=0
cmd.Parameters(“p_delnote_id”).Value=Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(0))
cmd.Parameters(“p_order_id”).Value=Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(1))
cmd.Parameters(“p_product_id”).Value=Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(2))
cmd.Parameters(“p_数量”).Value=Convert.ToInt32(数据集.表格(0).行(i).项(3))
temp=cmd.ExecuteNonQuery()
结果=cmd.Parameters(“p_confirm”).Value.ToString()
...
下一个
如果结束
下一个