Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Вниз

Получить текст с сообщением об ошибке.   Найти похожие ветки 

 
SergP.   (2006-09-04 12:32) [0]

ADO, Oracle
Если при выполнении некой PL/SQL процедуры:


with TADOCommand.Create(Application) do
   try
       Connection:=ADConn;
       CommandText:="begin ....... ; end;";
       Execute;
   finally
     free;
   end;


возникло исключение, то можно ли получить текст с соответствующим Оракловским сообщением?


 
Anatoly Podgoretsky ©   (2006-09-04 12:39) [1]

Для того, чтобы обрабатывать ошибку надо включить блок try except end


 
Desdechado ©   (2006-09-04 12:40) [2]

можно, как всегда, через except или глобальный обработчик


 
SergP.   (2006-09-04 13:02) [3]

> [1] Anatoly Podgoretsky ©   (04.09.06 12:39)
> Для того, чтобы обрабатывать ошибку надо включить блок try
> except end


Ну у меня примерно так все:

try
...
with TADOCommand.Create(Application) do
  try
      Connection:=ADConn;
      CommandText:="begin ....... ; end;";
      Execute;
  finally
    free;
  end;
...
except
...
end;



Но мне нужно не просто обработать ошибку, а узнать что за ошибка...

ну типа когда я выполняю процедуру в SQLPlus я получаю:

ERROR at line 1:
ORA-01401: inserted value too large for column
ORA-06512: at "XXXXX.XXXXXX", line 983
ORA-06512: at line 2


Вот этот текст можно получить или нет?


 
ANB ©   (2006-09-04 13:08) [4]


> Вот этот текст можно получить или нет?

Это не текст ошибки, а стек ошибок. И вытащить его не так просто.


 
ANB ©   (2006-09-04 13:10) [5]

А через ADO будет тем более проблематично.

А текст ошибки лежим в свойстве Message класса Exception


 
SergP.   (2006-09-04 13:11) [6]

> [4] ANB ©   (04.09.06 13:08)
>
> > Вот этот текст можно получить или нет?
>
> Это не текст ошибки, а стек ошибок. И вытащить его не так
> просто.


Плохо...
ну ладно. Тогда придется обойтись без этого...


 
ANB ©   (2006-09-04 13:16) [7]


> Плохо...
> ну ладно. Тогда придется обойтись без этого...

Используй одак, и счастья будет больше. Он стек тянет на клиента.


 
SergP.   (2006-09-04 13:30) [8]

> Используй одак, и счастья будет больше. Он стек тянет на
> клиента.


Дык я так и не нашел нужные компоненты... Три разных библиотеки компонентов "для прямого доступа" скачал, но так и не понял почему в них параметры подключения указываются не так как это должно быть при прямом доступе.
Почему там базу можно указать только из tnsnames.ora , и пр.


 
Desdechado ©   (2006-09-04 13:34) [9]

> Это не текст ошибки, а стек ошибок. И вытащить его не так просто.
dbExpress его вынимает как текст ошибки. Без всяких проблем. Хотя, возможно, это особенности драйвера.


 
Sergey13 ©   (2006-09-04 13:34) [10]

> [8] SergP.   (04.09.06 13:30)

Остается сказать как должны указываться параметры при прямом доступе и что пишется в АДО (неужели строка поключения из tnsnames.ora не учавствует? - я ен в курсе)?


 
SergP.   (2006-09-04 13:41) [11]

> [10] Sergey13 ©   (04.09.06 13:34)
> > [8] SergP.   (04.09.06 13:30)
>
> Остается сказать как должны указываться параметры при прямом
> доступе и что пишется в АДО (неужели строка поключения из
> tnsnames.ora не учавствует? - я ен в курсе)?


Ну в ADO - логин/пароль/локальный TNS
А насчет прямого доступа, я всегда считал что:
Логин/пароль/SID/Хост/Порт

Ну может я не прав. Не знаю точно... Просто помню что находил такие компоненты для прямого доступа, но это давно было. Сейчас искал - никак найти не получается...


 
ANB ©   (2006-09-04 13:42) [12]


> это должно быть при прямом доступе.

То, что ты хочешь, это не прямой доступ, а кривой.


 
ANB ©   (2006-09-04 13:43) [13]


> находил такие компоненты для прямого доступа

ОДАК позволяет работать без клиента или с клиентом, но без использования tnsnames.


 
parovoZZ ©   (2006-09-04 13:45) [14]

Подойдёт или нет?

ADOConnect.Errors.Get_Item (0).NativeError;
ADOConnect.Errors.Item[0].Description;


 
SergP.   (2006-09-04 13:51) [15]

> [13] ANB ©   (04.09.06 13:43)
>
> > находил такие компоненты для прямого доступа
>
> ОДАК позволяет работать без клиента или с клиентом, но без
> использования tnsnames.


Откуда он тогда должен знать с чем я хочу работать, если SID , хост и порт там не указывать и tnsnames не используется?


 
SergP.   (2006-09-04 13:51) [16]

> [14] parovoZZ ©   (04.09.06 13:45)
> Подойдёт или нет?
>
> ADOConnect.Errors.Get_Item (0).NativeError;
> ADOConnect.Errors.Item[0].Description;


Щас проверим...


 
SergP.   (2006-09-04 13:54) [17]

> [14] parovoZZ ©   (04.09.06 13:45)
> Подойдёт или нет?
>
> ADOConnect.Errors.Get_Item (0).NativeError;
> ADOConnect.Errors.Item[0].Description;


Оно.
Спасибо!!!


 
ANB ©   (2006-09-04 14:04) [18]


> Откуда он тогда должен знать с чем я хочу работать, если
> SID , хост и порт там не указывать и tnsnames не используется?
>

Кто сказал, что его там нельзя указать ?


 
SergP.   (2006-09-04 14:07) [19]

> Кто сказал, что его там нельзя указать ?

Я там такого не нашел


 
ANB ©   (2006-09-04 14:34) [20]


> SergP.   (04.09.06 14:07) [19]

Кликни два раза по TOraSession и узнаешь много интересного. :)


 
SergP.   (2006-09-04 15:20) [21]

> [20] ANB ©   (04.09.06 14:34)
>
> > SergP.   (04.09.06 14:07) [19]
>
> Кликни два раза по TOraSession и узнаешь много интересного.
> :)


Кликнул. открылся ихний Экплорер, в котором ничего особого нет, хотя если попытаться залогиниться то предлагает ввести логин/пароль и базу, где предлагается на выбор то что у меня прописано в tnsnames.ora


 
ANB ©   (2006-09-04 15:39) [22]


> SergP.   (04.09.06 15:20) [21]

Ты точно по одаковской TOraSession кликаешь ? Насколько я помню, там есть галка Net и возможность вводить хост, сид и IP. Короче, у этого компонента есть аналог строки коннекта, в которую он и кидает все, что ты написала в отдельных свойствах. Через нее можно работать, если не хочешь указывать TNS. (только нафига это нужно). Вообще, странная идея уходить с имеющихся нативных компонентов на универсальные только из-за того, что не смог подключиться напрямую.
Это называется создавать себе трудности и мужественно их преодолевать. Вы, часом, срочную в армии не служили ?


 
SergP.   (2006-09-04 16:43) [23]

> [22] ANB ©   (04.09.06 15:39)
> > SergP.   (04.09.06 15:20) [21]
>
> Ты точно по одаковской TOraSession кликаешь ?


А черт ее знает... Я по поисковикам по запросу "Компоненты Delphi прямого доступа Oracle" понаходил несколько таких компонентов, понаставлял.
Если не трудно, дайте ссылку на 100% одаковский компонент.
А то у меня есть подозрение что в инете очень много чего называется компонентами прямого доступа лишь по той причине что позволяют работать без BDE...


> Вы, часом, срочную в армии не служили ?


Служил. :-)


 
ANB ©   (2006-09-04 16:50) [24]


> Служил. :-)

И что, неужели армия вас не научила, что это хреновый подход ?
Нет, если, конечно, согласно ТЗ нужно писать на ADO+Oracle и заказчик/начальство никак не хочет использовать ничего другого - это одно. А зачем искать себе проблемы добровольно ?


 
ANB ©   (2006-09-04 16:51) [25]


> Если не трудно, дайте ссылку на 100% одаковский компонент.

К сожалению, ссылка не поможет. Вы в москве ?


 
SergP.   (2006-09-04 17:02) [26]


> [24] ANB ©   (04.09.06 16:50)
>
> > Служил. :-)
>
> И что, неужели армия вас не научила, что это хреновый подход
> ?
> Нет, если, конечно, согласно ТЗ нужно писать на ADO+Oracle
> и заказчик/начальство никак не хочет использовать ничего
> другого - это одно. А зачем искать себе проблемы добровольно
> ?


Да нет. Заказчика нет. Пишу по собственной инициативе, чтобы облегчить жизнь себе и удаленным сотрудникам.
Да и щас я пока пишу на АДО, но стараюсь так чтобы если вдруг найду нормальные ODAC компоненты, то чтобы переделка не заняла много времени.

> [25] ANB ©   (04.09.06 16:51)
>
> > Если не трудно, дайте ссылку на 100% одаковский компонент.
>
> К сожалению, ссылка не поможет. Вы в москве ?


К сожалению нет... Даже не в России...

А почему ссылка не поможет?


 
ANB ©   (2006-09-04 17:07) [27]


> А почему ссылка не поможет?

Потому что по ней качать если и дадут, то триал. А так бы лично дал . . .


 
sniknik ©   (2006-09-04 17:12) [28]

> Но мне нужно не просто обработать ошибку, а узнать что за ошибка...
> ну типа когда я выполняю процедуру в SQLPlus я получаю:
> ERROR at line 1:
> ORA-01401: inserted value too large for column
> ORA-06512: at "XXXXX.XXXXXX", line 983
> ORA-06512: at line 2
> Вот этот текст можно получить или нет?
что провайдер передаст то и получиш (если это ошибка а не сообщение, вот его получить проблемнее)
не знаю с ораклом, проверить не могу но от FB на неверный запрос
SELECT * FROM TABLE1
WHERE ID IS Nil
например получаю
EOleException:

Dynamic SQL Error
SQL error code = -104
Token unknown - line 2, char 13
Nil

все правильно, между прочим. наверняка и для оракла будет также, проверить ка говорил не могу, счас не оракл стоит, но могу послать для самостоятельного теста прогу на ADO.


 
SergP.   (2006-09-04 17:12) [29]

> [27] ANB ©   (04.09.06 17:07)
>
> > А почему ссылка не поможет?
>
> Потому что по ней качать если и дадут, то триал. А так бы
> лично дал . . .


Может по мылу? glukmaker@gmail.com


 
ANB ©   (2006-09-04 17:17) [30]


> Может по мылу? glukmaker@gmail.com

У нас траффик ограничен. А вместо мыла вообще лотус. Так что пока облом.


 
SergP.   (2006-09-04 17:19) [31]

> [28] sniknik ©   (04.09.06 17:12)


Просто в цикле несколько раз выполняется процедура, и иногда при некоторых входных параметрах возникают подобные сообщения
> ERROR at line 1:
> ORA-01401: inserted value too large for column
> ORA-06512: at "XXXXX.XXXXXX", line 983
> ORA-06512: at line 2

вот я и хотел сделать чтобы поскладывать их в лог, чтобы юзер потом мог его просмотреть и проанализировать...
Что касается ADO, то мне [14] parovoZZ ©   (04.09.06 13:45) помогло...


 
ANB ©   (2006-09-04 17:21) [32]


> SergP.   (04.09.06 17:19) [31]

Вообще то хорошим подходом было бы ошибки исправить, а не скидывать юзеру, который их все равно не поймет :)
Эта ошибка означает, что вставляемое значение не лезет в поле таблицы.


 
SergP.   (2006-09-04 17:26) [33]

> [30] ANB ©   (04.09.06 17:17)
>
> У нас траффик ограничен.


Хм... Жаль...

> [30] ANB ©   (04.09.06 17:17)
>  А вместо мыла вообще лотус. Так
> что пока облом.


Ну не обязательно мыло, можно было бы и по ftp, если бы не:
> [30] ANB ©   (04.09.06 17:17)
>
> У нас траффик ограничен.


Ладно... С АДО проблема решена. А что касается ОДАК - может когда-нить найду что-то и переделаю...


 
SergP.   (2006-09-04 17:30) [34]

> [32] ANB ©   (04.09.06 17:21)
>
> > SergP.   (04.09.06 17:19) [31]
>
> Вообще то хорошим подходом было бы ошибки исправить, а не
> скидывать юзеру, который их все равно не поймет :)
> Эта ошибка означает, что вставляемое значение не лезет в
> поле таблицы.


Ну во первых у каждого такого "юзера" своя база со своими ошибками, да и половина этих "юзеров" - такие же сисадмины как и я.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.059 c
15-1160459701
Александр Иванов
2006-10-10 09:55
2006.10.29
Настройка Visual Source Safe 6.0


2-1160544824
gvozdkoff
2006-10-11 09:33
2006.10.29
Ключевре поле DB Paradox


15-1160303268
kaif
2006-10-08 14:27
2006.10.29
Клубная культура


15-1159937308
vidiv
2006-10-04 08:48
2006.10.29
Непрерывное профессиональное обучение.


2-1160653527
VALUA
2006-10-12 15:45
2006.10.29
StringGrid - хранение информации





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский