各位老师:
我用VB写了一个扫条码的程序,每天量比较大,数据库是用的ORACLE,我在每次将条码上的数据写到数据库时,ORACLE就要硬解析一次insert into aaa values('1','2',....),请问,有没有办法让ORACLE只对该语句只解析一次,谢谢。

解决方案 »

  1.   

    不如这样:
    把这个INSERT语句加入到ORACLE中,做成一个存储过程,
    程序只要把相关参数传递给这个SP,这样速度肯定会好
    很多。在数据库中的SP是经过编译的。
      

  2.   

    不明白,
    “每次将条码上的数据写到数据库时,ORACLE就要硬解析一次insert into aaa values('1','2',....),”
    这样有什么问题吗?
      

  3.   

    谢谢各位老师的指点,这样在语法上不会有什么问题,但如果老是解析,这样很浪费资源呀,ORACLE的buffer cache资源浪费严重,我知道在VB里可以用Parameter对象来解决这个问题,但有那位老师能给我一个实例吗,谢谢!
      

  4.   

    http://blog.csdn.net/online/archive/2004/08/05/66376.aspx
      

  5.   

    '获取外观质量报表的记录集
    Public Function GetFaceReportRst(FromDate As Date, _
                                    ToDate As Date, _
                                    ByRef Rst As ADODB.Recordset, FaceReportType As ReportType, _
                                    Optional Model_Id As String = "", _
                                    Optional Workshop_id As String = "") As Boolean
        On Error GoTo errHandle:
        Dim para As New ADODB.Parameter
        Dim i As Integer
        Dim Cnn As New ADODB.Connection
        Cnn.ConnectionString = ConnectString
        Cnn.CursorLocation = adUseClient
        Cnn.Open
        Dim cmd As New ADODB.Command
        cmd.ActiveConnection = Cnn
        cmd.CommandType = adCmdStoredProc
        cmd.CommandText = "prFaceCheckReport"
        Set para = cmd.CreateParameter("@rptType", adSmallInt, adParamInput, , CInt(FaceReportType))
        cmd.Parameters.Append para
        Set para = cmd.CreateParameter("@FromDate", adVarChar, adParamInput, 50, Format(FromDate, "yyyy-mm-dd"))
        cmd.Parameters.Append para
        Set para = cmd.CreateParameter("@ToDate", adVarChar, adParamInput, 50, Format(ToDate, "yyyy-mm-dd"))
        cmd.Parameters.Append para
        Set para = cmd.CreateParameter("@model_id", adVarChar, adParamInput, 10)
        If Model_Id <> "" Then
            para.Value = Model_Id
        Else
            para.Value = Null
        End If
        cmd.Parameters.Append para
        Set para = cmd.CreateParameter("@workshop_id", adVarChar, adParamInput, 10)
        If Workshop_id <> "" Then
            para.Value = Workshop_id
        Else
            para.Value = Null
        End If
        cmd.Parameters.Append para
        Set Rst = cmd.Execute()
        GetFaceReportRst = True
        Exit Function
    errHandle:
        strError = Err.Description
    End Function