Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 логич.операции в дб2  [new]
студент_студент
Guest
будет ли в выражении (sql-процедура):
IF ( NOT (ParentCode IS NULL) AND NOT (Trim(ParentCode)='')  ) THEN
....
END IF
выполняться проверка второго условия при неверном первом?
т.е. в случае (ParentCode IS NULL) == True будет ли проверяться
(Trim(ParentCode)='') и если да, будет ли генериться исключение
(сравнение const с NULL)?

спасибо.
30 июн 06, 14:02    [2830608]     Ответить | Цитировать Сообщить модератору
 Re: логич.операции в дб2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Будет.
Сравните:
begin atomic
declare parentcode int;
set parentcode=0;
IF ( parentcode!=0 AND 1/parentcode!=1) THEN
   set parentcode=-1;
END IF;
end@
И, если надо, чтоб отработало:
begin atomic
declare parentcode int;
set parentcode=0;
IF ( parentcode!=0) THEN
 IF (1/parentcode!=1) THEN
   set parentcode=-1;
 END IF;
END IF;
end@
Правда, в вашем случае никакого исключения генериться не будет, т.к. сравнение константы c NULL в SQL в DB2 - это не криминал.
30 июн 06, 15:27    [2831164]     Ответить | Цитировать Сообщить модератору
 Re: логич.операции в дб2  [new]
студент_студент
Guest
подскажите, пожалуйста, использование в STP
GET DIAGNOSTICS v_MSG = MESSAGE_TEXT;
мне дает ошибку :
Create stored procedure returns -104.
DB2ADMIN.BIDCRDBGN: 39: [IBM][CLI Driver][DB2/NT] SQL0104N  An unexpected token "MESSAGE_TEXT" was found following "DIAGNOSTICS v_MSG =".  Expected tokens may include:  "<psm_diag_statement_item>".  LINE NUMBER=39.  SQLSTATE=42601
спасибо
20 июл 06, 18:32    [2906796]     Ответить | Цитировать Сообщить модератору
 Re: логич.операции в дб2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
>>-GET DIAGNOSTICS---------------------------------------------->

>--+-SQL-variable-name--=--+-ROW_COUNT---------+-+-------------><
| '-DB2_RETURN_STATUS-' |
'-| condition-information |-------------------'

condition-information:

|--EXCEPTION--1------------------------------------------------->

.-,------------------------------------------.
V |
>----SQL-variable-name--=--+-MESSAGE_TEXT-----+-+---------------|
'-DB2_TOKEN_STRING-'

condition-information
Specifies that the error or warning information for the previously executed SQL statement is to be returned.
If information about an error is needed, the GET DIAGNOSTICS statement must be the first statement specified in the handler that will handle the error.
If information about a warning is needed, and if the handler will get control of the warning condition, the GET DIAGNOSTICS statement must be the first statement specified in that handler.
If the handler will not get control of the warning condition, the GET DIAGNOSTICS statement must be the next statement executed.
This option can only be specified in the context of an SQL Procedure (SQLSTATE 42601).

MESSAGE_TEXT
Identifies any error or warning message text returned from the previously executed SQL statement.
The message text is returned in the language of the database server where the statement is processed.
If the statement completed with an SQLCODE of zero, an empty string is returned for a VARCHAR variable or blanks are returned for a CHAR variable.
DB2_TOKEN_STRING
Identifies any error or warning message tokens returned from the previously executed SQL statement.
If the statement completed with an SQLCODE of zero, or if the SQLCODE had no tokens, an empty string is returned for a VARCHAR variable or blanks are returned for a CHAR variable.
20 июл 06, 18:53    [2906910]     Ответить | Цитировать Сообщить модератору
 Re: логич.операции в дб2  [new]
студент_студент
Guest
у меня и используется в SQL-процедуре:
    DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING --, NOT FOUND
    BEGIN
        GET DIAGNOSTICS v_MSG = MESSAGE_TEXT;
...
первым statement - ом в обработчике
20 июл 06, 19:04    [2906976]     Ответить | Цитировать Сообщить модератору
 Re: логич.операции в дб2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING --, NOT FOUND
BEGIN
GET DIAGNOSTICS EXCEPTION 1 v_MSG = MESSAGE_TEXT;
20 июл 06, 19:45    [2907123]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить