누군가가 도움을 줄 수 있습니다. 내 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 질의에있어 새로운 것을 알고있다.
어떤 오류가 발생합니까? – Richard
_from tbl.one_ 후 및 _where_ 앞에 쉼표를 제거하십시오. 이 오타는 _where_와 _CreatedDate> = ... _ 뒤에 구문 오류 예외를 제공해야합니다. 다음 번에 자동 문자열 연결 기능을 사용하고 &를 사용하여 명령을 연결하지 마십시오. – Steve
안녕하세요 @ 리차드,'{ "ORA-00911 : 잘못된 문자"}'로 '외부 구성 요소가 예외를 발생했습니다.' 죄송합니다. @Steve 하드 코딩 할 때 SQL이 안정적이기 때문에 질문하는 목적으로 필드/테이블 이름 중 일부를 제거하기 위해 많은 SQL을 수정했습니다. – Wowdude