VB.NET-清除传递给Oracle存储过程的参数
我有一个将文件内容插入Oracle DB的sub。 对于一个文件,一切正常,但对于多个文件,过程参数保留旧值,但也保留新值;因此,在第二个文件中,我有8个参数,而不是4个参数 下面是一个代码示例: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>"
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()
...
下一个
如果结束
下一个