Функция VB.net дает ORA-00911 неверный символ ошибки - PullRequest
0 голосов
/ 12 сентября 2011
 Public Shared Function GetData(ByVal id As Integer) As List(Of SomeClass)
            Dim command As New OracleCommand       
            Dim conn As New OracleConnection(WebConfigurationManager.ConnectionStrings("ConnectionString").ToString)
            Dim param As New OracleParameter
            param.ParameterName = "idnumber"
            param.Value = id
            param.DbType = DbType.Int32
            command.Parameters.Add(param) 

            command.Connection = conn
            command.CommandText = "select VAL1, VAL2, Year from local.proc where id = :idnumber and Year = to_number(to_char(sysdate,’YYYY’))"

            Dim reader As OracleDataReader
            Dim someList As New List(Of SomeClass)

            connection.Open()
            reader = command.ExecuteReader()
            While reader.Read
                Dim someClass As New SomeClass
                someClass.VAL1 = reader("VAL1")
                someClass.VAL2 = reader("VAL2")
                someClass.Year = reader("YEAR")
                someList.Add(someClass)
            End While
            connection.Close()
            Return someList
        End Function

Эта функция выдает ошибку ORA-00911 недопустимого символа. У меня есть другие методы того же стиля, и они работают правильно. Любой совет, где я иду не так, пожалуйста? Спасибо

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

Я думаю, что проблема в неправильных кавычках в выражении SQL для года, т.е.: ’YYYY’

Измените его на 'YYYY'

Заменить строку:

command.CommandText = "select VAL1, VAL2, Year from local.proc where id = :idnumber and Year = to_number(to_char(sysdate,’YYYY’))"

с

command.CommandText = "select VAL1, VAL2, Year from local.proc where id = :idnumber and Year = to_number(to_char(sysdate,'YYYY'))"
2 голосов
/ 12 сентября 2011

Похоже, вы используете отформатированные апострофы.

to_char(sysdate,’YYYY’

попробуйте изменить его на

to_char(sysdate,'YYYY'
...