powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 v 9.7, Oracle PL/SQL Compatibility
6 сообщений из 6, страница 1 из 1
DB2 v 9.7, Oracle PL/SQL Compatibility
    #36631577
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DB21085I Instance "DB2_02" uses "32" bits and DB2 code release "SQL09071" with
level identifier "08020107".
Informational tokens are "DB2 v9.7.100.177", "s091114", "IP23028", and Fix Pack
"1".
Product is installed at "E:\DB2V97FP1\SQLLIB" with DB2 Copy Name "DB2COPY2".


На вскидку обнаружились некоторые проблемы.

1) В Oracle как известно у процедур и функций имеются параметры по умолчанию.
В документе sg247736.pdf (Oracle_to_DB2_Conversion_Guide) имеется пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE OR REPLACE PACKAGE emp_admin
 IS
 FUNCTION get_dept_name (
    p_deptno NUMBER DEFAULT  10 
 )
 RETURN VARCHAR2;
 FUNCTION update_emp_sal (
    p_empno NUMBER,
    p_raise NUMBER
 )
 RETURN NUMBER;
 PROCEDURE hire_emp (
    p_empno NUMBER,
    p_ename VARCHAR2,
    p_job VARCHAR2,
    p_sal NUMBER,
    p_hiredate DATE DEFAULT sysdate,
    p_comm NUMBER DEFAULT  0 ,
    p_mgr NUMBER,
    p_deptno NUMBER DEFAULT  10 
 );
 PROCEDURE fire_emp (
    p_empno NUMBER
 );
END emp_admin;

1) по ходу обнаружилось, что в у функций, объявленных в пакетах значения по умолчанию значения не поддерживаются вообще, а у процедур, объявленных в пакетах параметры с дефолтными значениями должны идти обязательно в конце списка параметров (типа как в С/С++). Т.е. в данном документе примеры - нерабочие.

2) Далее обнаружилось, что в пакетах невозможно объявить свой подтип. Т.е:
CREATE OR REPLACE PACKAGE emp1
IS
TYPE myt IS varray(1) of VARCHAR(30) ;
SUBTYPE xx is VARCHAR2(30); << ===== На этом валится
END;
@

Конечно можно использовать %TYPE, однако тогда очень много ручной переделки.
С этой стороны не совсем понятно, каким образом были объявлены типы в DBMS_* пакетах?
Это видно по select * from syscat.datatypes
Т.е. выходит объявление своих типов в пакетах передусмотрено, однако не работает. Почему?

Конечно можно выкрутиться так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
create distinct type cxmcl.cmx_test as varchar2( 60 ) with comparisons
@

CREATE OR REPLACE PACKAGE emp_test 
IS 
    PROCEDURE test;
END;
@

SET SERVEROUTPUT ON
@

CREATE OR REPLACE PACKAGE BODY emp_test 
IS 
    V1 cxmcl.cmx_test;

    PROCEDURE test
    IS
    BEGIN
        V1:='Hello!';
        DBMS_OUTPUT.PUT_LINE(V1);
    END;
END;
@

BEGIN
    emp_test.test;
END;
@

Однако не хотелось бы городить огород и создавать лишние схемы.

3) И, далее, не поддерживается CREATE OBJECT. Увы, для полной совместимости - нужно.

В связи с вышеизложенным:
Может у нас не тот билд?
Может есть какие-либо патчи?
Когда будет следующий FP и будут ли в нем решены указанные проблемы?
...
Рейтинг: 0 / 0
DB2 v 9.7, Oracle PL/SQL Compatibility
    #36634730
ARIST_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman,

ждите выхода 9.7 FP2. Там должно быть много доработок.
...
Рейтинг: 0 / 0
DB2 v 9.7, Oracle PL/SQL Compatibility
    #36636125
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, еще, кастинг между типами неважно работает.
Например конкатенация между DISTINCT типами, даже производными от CHAR/VARCHAR не работает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE DISTINCT TYPE MY_STR AS VARCHAR( 100 ) WITH COMPARISONS

BEGIN
   DECLARE X MY_STR;
   DECLARE Y VARCHAR( 30 );
   SET Y='Hello '||X; -- Не работает
   SET Y='Hello '||cast(X as varchar); -- работает
END;
...
Рейтинг: 0 / 0
DB2 v 9.7, Oracle PL/SQL Compatibility
    #36636158
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то уже пол года с момента выпуска 1 ФП прошло... и сколько еще ждать?
...
Рейтинг: 0 / 0
DB2 v 9.7, Oracle PL/SQL Compatibility
    #36636534
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanВообще-то уже пол года с момента выпуска 1 ФП прошло... и сколько еще ждать?Уже недолго...
...
Рейтинг: 0 / 0
DB2 v 9.7, Oracle PL/SQL Compatibility
    #36658393
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanВообще-то уже пол года с момента выпуска 1 ФП прошло... и сколько еще ждать? Fix pack 2 .
Fix pack summary .
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 v 9.7, Oracle PL/SQL Compatibility
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]