2017-10-02 10 views
-1

누군가가 도움을 줄 수 있습니다. 내 VB.NET 프로젝트에서 Oracle.ManagedDataAccess.Client을 사용하여 Oracle 11g 데이터베이스에서 정보를 가져옵니다.VB.NET에서 Oracle SQL에 대한 바운드 날짜 매개 변수 지정

하드 코딩 된 문자열로 작업하는 프로젝트가 있지만 서버로드가 더 쉽다고 들었으므로 datetime을 바운드 변수로 변경하려고합니다.

나는 Using Ocommand As New OracleCommand( 및 하드 코딩 된 날짜 문자열 작업을 아래 얻을 수 있지만, 아래의 직선 연결하고 바인딩 변수로 Using를 대체 동작하지 않습니다 :

''Build SQL Query and set variables 
    Dim d_start_date As DateTime = New DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour - 1, 0, 0) 
    Dim p_start_date As OracleParameter = New OracleParameter 
    p_start_date.OracleDbType = OracleDbType.Date 
    p_start_date.Value = d_start_date 
    p_start_date.ParameterName = "fromDateParam" 

    Dim d_end_date As DateTime = New DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, 0, 0) 
    Dim p_end_date As OracleParameter = New OracleParameter 
    p_end_date.OracleDbType = OracleDbType.Date 
    p_end_date.Value = d_end_date 
    p_end_date.ParameterName = "toDateParam" 


    ''Setup Datatable, connections and pull data 
    Dim myDT As New DataTable 
    Dim Oconn As New OracleConnection(my_CREDS & my_COMMS) 

    Dim Ods As New DataSet 
    Dim Ocommand As OracleCommand = New OracleCommand("select " & _ 
     "username as Recipient, " & _ 
     "to_char(CreatedDate,'YYYY-mm-dd HH24:MI:SS') as CREATEDDATE " & _ 
     "from " & _ 
     "tbl.one " & _ 
     "where " & _ 
     "CreatedDate >= :fromDateParam " & _ 
     " and CreatedDate < :toDateParam;", Oconn) 
    Ocommand.Parameters.Add(p_start_date) 
    Ocommand.Parameters.Add(p_end_date) 
    Using Oda As New OracleDataAdapter(Ocommand) 
     Oda.Fill(myDT) 
    End Using 
    Ocommand.Dispose() 

이렇게 데이터 테이블을 채우려는 동안 오류가 발생했습니다 : Oda.Fill(myDT). 왜 그 이유를 설명 할 수 있습니까? 나는 여전히 Oracle db 질의에있어 새로운 것을 알고있다.

+0

어떤 오류가 발생합니까? – Richard

+0

_from tbl.one_ 후 및 _where_ 앞에 쉼표를 제거하십시오. 이 오타는 _where_와 _CreatedDate> = ... _ 뒤에 구문 오류 예외를 제공해야합니다. 다음 번에 자동 문자열 연결 기능을 사용하고 &를 사용하여 명령을 연결하지 마십시오. – Steve

+0

안녕하세요 @ 리차드,'{ "ORA-00911 : 잘못된 문자"}'로 '외부 구성 요소가 예외를 발생했습니다.' 죄송합니다. @Steve 하드 코딩 할 때 SQL이 안정적이기 때문에 질문하는 목적으로 필드/테이블 이름 중 일부를 제거하기 위해 많은 SQL을 수정했습니다. – Wowdude

답변

0

조금 뒤죽박죽을 한 끝에 Oracle SQL Developer의 원본 문에서 가져온 SQL 문 끝에 ;을 추가했다는 것을 발견했습니다. 이 코드를 제거한 후 코드는 꿈처럼 작동합니다!