Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / pl/sql в db2 и прочее / 10 сообщений из 10, страница 1 из 1
01.02.2012, 23:52
    #37642984
ora2db2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
задача переноса базы с oracle 10.2 на db2.
пробую перенос на db2 V9.7 ese и db2 V9.7.5 exp-c
возникал непонятная проблема.
краткий пример:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE OR REPLACE PACKAGE PKG1 AS
PROCEDURE MAKE( IN_TYPE IN VARCHAR2, IN_ID   IN INTEGER DEFAULT NULL );	
END PKG1;

CREATE OR REPLACE PACKAGE BODY PKG1 AS
FUNCTION MYCHECK(IN_ID IN INTEGER ) RETURN BOOLEAN IS
BEGIN	RETURN TRUE; END;

PROCEDURE MAKE( IN_TYPE IN VARCHAR2, IN_ID IN INTEGER DEFAULT NULL ) IS
    call_result boolean := MYCHECK(IN_ID);
BEGIN
	IF call_result --= false 
	THEN
    	RAISE_APPLICATION_ERROR( -20000, 'PKG1.MAKE Failed');
    END IF;
END;
	
END PKG1;



на ESE не проходит:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Развернуть DB2ADMIN.PKG1

Выполняется
DB2ADMIN.PKG1 - Внедрение запущено.
DB2ADMIN.PKG1 - Создание объекта Спецификации пакета PL/SQL завершено.
При создании Тело пакета PL/SQL возвращен SQLCODE: -104, SQLSTATE: 42601.
DB2ADMIN.PKG1: 8: An unexpected token "THEN" was found following ")".  Expected tokens may include:  "

  IF call_result".. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.62.80

An unexpected token "THEN" was found following ")".  Expected tokens may include:  "

  IF call_result".. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.62.80

DB2ADMIN.PKG1 - Внедрение завершилось неудачно.
DB2ADMIN.PKG1 - Откат выполнен успешно.



Проходит только вариант:
Код: plsql
1.
 IF call_result = false 


Также не проходит вариант с CASE типа:
Код: plsql
1.
2.
3.
4.
5.
CASE --TRUE
 WHEN .. THEN ..
 WHEN .. THEN ..
..
END;



проходит только с явным TRUE


На EXP-C все проходит.
Выполняется
Код: sql
1.
2.
3.
4.
5.
6.
Развернуть DB2ADMIN.PKG1

DB2ADMIN.PKG1 - Внедрение запущено.
DB2ADMIN.PKG1 - Создание объекта Спецификации пакета PL/SQL завершено.
DB2ADMIN.PKG1 - Создание объекта Тело пакета PL/SQL завершено.
DB2ADMIN.PKG1 - Внедрение выполнено успешно.




Как вылечить проблему на ESE 9.7.0 ?
...
Рейтинг: 0 / 0
02.02.2012, 00:14
    #37643007
ora2db2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
декларация параметров процедур и функций с default также не проходит на db2ese 9.7.0 в отличии от exp-c 9.7.5.
...
Рейтинг: 0 / 0
02.02.2012, 00:37
    #37643038
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
ora2db2 Как вылечить проблему на ESE 9.7.0 ?
Не знаете, где взять фикспак?
http://www-01.ibm.com/support/docview.wss?rs=71&uid=swg27007053
регистрация бесплатна.
...
Рейтинг: 0 / 0
02.02.2012, 21:57
    #37644862
ora2db2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
DB2 Data Movement Tool 2.00-b2114
Oracle 11.2
ojdbc14.jar
Не удается получить скрипты для миграции пакетов, типов выбранной схемы.
В чем дело? Может от jdbc зависть?
...
Рейтинг: 0 / 0
03.02.2012, 01:03
    #37644990
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
ora2db2,

ошибка в 17-й строке?

Проблемы с jdbc возможны (какая-нибудь бага, из-за которой какой-нибудь LOB не читается, и т.п.), но маловероятны. Ведь все описания объектов доступны обычными SQL-запросами из таблиц, описанных в ораклячьем Reference. "Зато", как я помню, при запуске DMT появляется чёрное окошко с Java-эксепшенами - наверняка там и ответ.
...
Рейтинг: 0 / 0
03.02.2012, 11:18
    #37645328
ora2db2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
Victor Metelitsa,
сообщения об ошибках есть, но пользы от них пока нет.
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
[2012-02-03 10.40.54.126] BuildDataTypeMap (0.346 sec) SQL=SELECT OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE, CHAR_USED,
DATA_LENGTH FROM   DBA_TAB_COLUMNS WHERE  OWNER IN ('MyOwnerID') ORDER BY OWNER, TABLE_NAME, COLUMN_NAME
java.sql.SQLException: ORA-20000: MyValue is not SET
ORA-06512: ᆳᅠ  "MyOwnerID.MY_PKG", line 113

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
	at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:213)
	at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:952)[2012-02-03 10.41.01.424] 
Error in executing sql = SELECT MAX(DBMS_LOB.GETLENGTH("COMMENT")) FROM "MyOwnerID"."MY_VIEW"

	at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1054)
	at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:836)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1124)
	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
	at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
	at ibm.DBData.queryFirstLongValue(DBData.java:578)
	at ibm.GenerateExtract$BladeRunner.BuildDataTypeMap(GenerateExtract.java:10117)
	at ibm.GenerateExtract$BladeRunner.BuildBladeMemoryMap(GenerateExtract.java:12471)
	at ibm.GenerateExtract$BladeRunner.run(GenerateExtract.java:7100)


При том, что
java.sql.SQLException: ORA-20000: MyValue is not SET
ORA-06512: ᆳᅠ "MyOwnerID.MY_PKG", line 113
ругается на самую безобидную из функций пакета:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create or replace PACKAGE BODY MY_PKG is
   MyValue  integer := 0;
...
FUNCTION get_value return integer IS
BEGIN
     IF nvl( MyValue, 0 )= 0 THEN raise_application_error( -20000, 'MyValue is not SET' ); END IF;
RETURN MyValue;
END;


"MyOwnerID"."MY_VIEW" - простой View.
Других сообщений об ошибках нет.
Подготовка пакета для DB2 MEET проходит без проблем и DB2 MEET на этот пакет предупреждений не выдает.
...
Рейтинг: 0 / 0
03.02.2012, 14:06
    #37645775
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
ora2db2,

ну как же "пользы нет"? По-моему, всё, как на ладони. У вас, что, имя ораклячьего пользователя действительно в mixed case? (MyOwnerID вместо MYOWNERID)

Автор утилиты, похоже, такое даже вообразить не мог.
...
Рейтинг: 0 / 0
03.02.2012, 14:15
    #37645796
ora2db2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
Victor Metelitsa,

Извиняюсь, это я так неудачно заменил смысловые названия на бессмысленные.
В исходном варианте лога все UCASE.
...
Рейтинг: 0 / 0
03.02.2012, 14:35
    #37645836
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
Ну, это намекает, что утилита по каким-то своим соображениям проверяет
SELECT MAX(DBMS_LOB.GETLENGTH("COMMENT")) FROM "MyOwnerID"."MY_VIEW",
что почему-то вызывает
MY_PKG.get_value,
а переменная MyValue по дефолту 0 и непонятно, кто и когда должен был задать иное,
а когда она 0, то raise_application_error( -20000, 'MyValue is not SET' )
?

И что же тогда тут безобидного?
...
Рейтинг: 0 / 0
03.02.2012, 16:48
    #37646183
ora2db2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pl/sql в db2 и прочее
Victor Metelitsa,

да, view использует функцию и в db2 есть ограничения, не позволяющие
сделать такую же view, как в oracle. SQL0583N.

спасибо. будем разбираться.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / pl/sql в db2 и прочее / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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