Насколько большое число вписывается в этот код ASP? - PullRequest
3 голосов
/ 12 апреля 2011
'   Now get a Location_ID 
'
    Set RS = DB.Execute (AF.SQL("GenerateLocationID"))
    Location_ID = CInt (RS(0).Value)
    RS.Close

Это записывается в базу данных Oracle, определенную с помощью Number (10), но возвращает следующую ошибку:

Ошибка времени выполнения Microsoft VBScript '800a0006'

Переполнение: 'CInt'

Я подозреваю, потому что наибольшее значение в таблице Oracle сейчас равно 32767. Это ограничение в коде, который создает идентификатор?

(AF.SQL («GenerateLocationID») - это «Select Location_ID.NextVal from Dual», так что это просто стандартный оператор выбора Oracle.

Ответы [ 2 ]

4 голосов
/ 13 апреля 2011

@ thursdaysgeek: быстрое исправление может быть -

Location_ID = CLng(RS(0).Value)

Или, если вы хотите отладить его

On Error Resume Next
Location_ID = CInt(RS(0).Value)
If Err.Number <> 0 Then
    Response.Write RS(0).Value
End If
On Error GoTo 0
4 голосов
/ 12 апреля 2011

Это должно ответить на ваш вопрос:

Функция CInt преобразует выражение в тип Integer.Примечание. Значение должно быть числом от -32768 до 32767.

На основании кода выясняется, что Location_ID должен быть коротким.

http://www.w3schools.com/VBScript/func_cint.asp

...