Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
Исследую возможности миграции нашего приложения с oracle на DB2. Один из затыков: DB2 9.7 со включенной совместимостью с PL/SQL ругается на функцию ltrim с двумя аргументами: select '"'||ltrim('0001000','0')||'"' from dual; SQL0440N No authorized routine named "LTRIM" of type "FUNCTION" having compatible arguments was found. Ладно, пробую написать свой аналог (пока заглушка) : create or replace function ltrim(s varchar,f varchar) return varchar as begin return null; end; / Функция успешно создается. Но при попытке сделать вышеприведенный select - ошибка та-же самая. В чем проблема? Кстати, попытался любые свои функции создать - та-же беда: создаётся успешно, но при попытке вызова ругается точно так-же. Где беда-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2010, 18:49 |
|
||
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
Скорее всего функция была создана со схемой пользователя-создателя. Например: db2admin.ltrim. В клиентском приложении можно установить схему по умолчанию. Вроде бы SET SCHEMA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2010, 09:23 |
|
||
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
Да, спасибо, проблема оказалась в этом. Когда поставил в вызове функции префикс схемы перед именем функции всё заработало. Но без префикса не работает, даже если функция создана в текущей схеме все равно надо ставить имя схемы при вызове. Ну это неправильно как-то. Что мне теперь, везде где функции вызываются префикс их схемы ставить? Может ещё где какая настройка для этого есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2010, 10:59 |
|
||
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
sleКогда поставил в вызове функции префикс схемы перед именем функции всё заработало. Но без префикса не работает, даже если функция создана в текущей схеме все равно надо ставить имя схемы при вызове. Ну это неправильно как-то. Что мне теперь, везде где функции вызываются префикс их схемы ставить? Может ещё где какая настройка для этого есть?Функция создаётся в текущей схеме, посмотреть которую можно так: Код: plaintext Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2010, 12:25 |
|
||
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
Большое спасибо, команды ценные, особенно когда только начинаешь. Но как объяснить всё это? CLPPlus: Version 1.1 Copyright (c) 2009, IBM CORPORATION. All rights reserved. SQL> values current schema; 1 -------------------------------------------------- DB2INST1 DB250000I: The command completed successfully. SQL> create or replace function foo return varchar2 as 2 begin 3 return 'foo'; 4 end; 5 / DB250000I: The command completed successfully. SQL> select foo from dual; 1 -------------------------------------------------- foo SQL> set current schema YOUR_SCHEMA_NAME; DB250000I: The command completed successfully. SQL> select foo from dual; 1 -------------------------------------------------- foo SQL> create or replace function foo1 return varchar2 as 2 begin 3 return 'foo1'; 4 end; 5 / DB250000I: The command completed successfully. SQL> select foo1 from dual; ERROR near line 1: SQL0206N "FOO1" is not valid in the context where it is used. SQL> select YOUR_SCHEMA_NAME.foo1 from dual; 1 -------------------------------------------------- foo1 SQL> Получается, чтобы мне вызывать функции без префикса мне нужно их создавать в схеме DB2INST1 ? А если я создаю функции в другой схеме, то даже находясь в этой другой схеме мне обязательно префикс схемы перед функцией указывать??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2010, 19:52 |
|
||
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
Создавайте все функции под одним пользователем или явно указывайте схему: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2010, 06:45 |
|
||
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
Не получается! Все равно требует имя схемы перед функцией! CLPPlus: Version 1.1 Copyright (c) 2009, IBM CORPORATION. All rights reserved. SQL> SET SCHEMA = MY_SCHEMA; DB250000I: The command completed successfully. SQL> VALUES CURRENT SCHEMA; 1 -------------------------------------------------- MY_SCHEMA DB250000I: The command completed successfully. SQL> create or replace function MY_SCHEMA.FOO(s varchar2,f varchar2) return varchar2 as 2 begin 3 return 'foo - '||s||' '||f; 4 end; 5 / DB250000I: The command completed successfully. SQL> VALUES CURRENT SCHEMA; 1 -------------------------------------------------- MY_SCHEMA DB250000I: The command completed successfully. SQL> select '"'||FOO('1','0')||'"' from dual; ERROR near line 1: SQL0440N No authorized routine named "FOO" of type "FUNCTION" having compatible arguments was found. SQL> select '"'||MY_SCHEMA.FOO('1','0')||'"' from dual; 1 -------------------------------------------------- "foo - 1 0" SQL> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2010, 11:09 |
|
||
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
sle, SET CURRENT SQLID ='YOUR_SCHEMA' - не пробовали? Хотя это, кажется тоже самое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2010, 14:30 |
|
||
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
knudsen, Спасибо, попробовал - все то-же самое. Ещё один глупый вопрос: При помощи IBM Data Studio создал пользователя, но зайти под ним не могу, так как не знаю пароля. При создании пользователя пароль не нашёл где указывается. Соответственно вопрос: как пользователю поменять пароль? Не тому под которым зашёл, а другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2010, 15:47 |
|
||
|
Исследование возможности миграции с oracle на DB2
|
|||
|---|---|---|---|
|
#18+
sle, 1. set schema задаёт схему по умолчанию для создаваемых объектов. Но когда идёт обращение к функции, то она ищется в списке, содержащемся в CURRENT PATH. По умолчанию там системные схемы и схема текущего пользователя. Добавить туда свою схему можно: Код: plaintext У db2 нет своих пользователей и групп - оно берёт их из внешних источников, по-умолчанию из ОС, где вам и надо заводить пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2010, 20:50 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=36721235&tid=1602681]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 257ms |

| 0 / 0 |
