Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Выполнение удаленной процедуры/функции через dblink  [new]
tyrell lab
Member

Откуда:
Сообщений: 41
Приветствую

Подскажите, плиз, как побороть проблемку
Есть центральная БД, есть удаленная БД (филиал). Требуется сделать update одной записи в БД филиала, не переписывая туда всю таблицу.

Как вариант хотел использовать такую вот конструкцию

PROCEDURE prApplyChangesInFil(iId IN NUMBER, NaimFilLink IN VARCHAR2)
IS
BEGIN
    EXECUTE IMMEDIATE '
    	BEGIN
                UPDATE SchemaName.TableName@' || NaimFilLink || '.WORLD
                SET 
                      TEXT = ' || sTEXT || ',
                      DATE_FROM = '|| TO_CHAR(dDATE_FROM, 'DD.MM.RRRR') ||',
                      DATE_TO = ' || TO_CHAR(dDATE_TO, 'DD.MM.RRRR') ||'
                WHERE
                    ID = :ID;
            END LOOP;
        END;'
    USING iId;
EXCEPTION
	WHEN NO_DATA_FOUND THEN SchemaName.PPP1RAISE('Нет данных!');    
END;

но мне ее юзать отсоветовали

тогда возник другой вопрос - в филиальной базе есть хранимая процедура/функция, которая выполнит update, хочу ее выполнить по линку

например

BEGIN
    execute immediate 'begin PB_SEQUENCES.fcurorg@NaimFilLink.WORLD; end;';
END;

выдает ошибку
[1]: (Error): ORA-06550: line 1, column 7: PLS-00201: identifier 'PB_SEQUENCES.FCURORG@NaimFilLink.WORLD' must be declared ORA-06550: line 1, column 7: PL/SQL: Statement ignored ORA-06512: at line 2

при этом обычный select из таблицы удаленной БД по линку нормально работает

подскажите, плиз, как еще можно решить эту проблему
7 авг 08, 14:25    [6039302]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
__mike__
Member

Откуда: Белгород
Сообщений: 553
а если так
BEGIN
   PB_SEQUENCES.fcurorg@NaimFilLink.WORLD;
END;
/
7 авг 08, 15:33    [6039777]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
tyrell lab
Member

Откуда:
Сообщений: 41
Аналогичная ошибка

[1]: (Error): ORA-06550: line 2, column 5: PLS-00201: identifier 'PB_SEQUENCES.FCURORG@NaimFilLink.WORLD' must be declared ORA-06550: line 2, column 5: PL/SQL: Statement ignored
7 авг 08, 15:40    [6039827]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
Denis Popov
Member

Откуда: Санкт-Петербург
Сообщений: 7862

NaimFilLink - это параметр, передаваемый в процедуру? Чему он равен?

Posted via ActualForum NNTP Server 1.4

7 авг 08, 15:46    [6039890]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
tyrell lab
Аналогичная ошибка

[1]: (Error): ORA-06550: line 2, column 5: PLS-00201: identifier 'PB_SEQUENCES.FCURORG@NaimFilLink.WORLD' must be declared ORA-06550: line 2, column 5: PL/SQL: Statement ignored

наиболее вероятно - в вашей залинковской процедуре есть (недефолтные) параметры.
вы её вызываете без параметров - т.е. с точки зрения сервера такой (так перегруженной)
процедуры нет.
7 авг 08, 18:47    [6041309]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
tyrell lab
Member

Откуда:
Сообщений: 41
Denis Popov

NaimFilLink - это параметр, передаваемый в процедуру? Чему он равен?
Posted via ActualForum NNTP Server 1.4


это не параметр, а наименование линка
7 авг 08, 19:47    [6041449]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
tyrell lab
Member

Откуда:
Сообщений: 41
orawish
tyrell lab
Аналогичная ошибка

[1]: (Error): ORA-06550: line 2, column 5: PLS-00201: identifier 'PB_SEQUENCES.FCURORG@NaimFilLink.WORLD' must be declared ORA-06550: line 2, column 5: PL/SQL: Statement ignored

наиболее вероятно - в вашей залинковской процедуре есть (недефолтные) параметры.
вы её вызываете без параметров - т.е. с точки зрения сервера такой (так перегруженной)
процедуры нет.


в процедуре нет параметров ни IN ни OUT
7 авг 08, 19:48    [6041452]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
tyrell lab
Denis Popov

NaimFilLink - это параметр, передаваемый в процедуру? Чему он равен?
Posted via ActualForum NNTP Server 1.4


это не параметр, а наименование линка


судя по следующему - имя линка у вас чуток другое..

SQL> set serveroutput on
SQL> declare
  2    a varchar2(30);
  3    b varchar2(30);
  4    c varchar2(30);
  5    dblink varchar2(1000);
  6    nextpos binary_integer;
  7  begin
  8    dbms_utility.name_tokenize('PB_SEQUENCES.fcurorg@NaimFilLink.WORLD'
  9      ,a ,b ,c ,dblink ,nextpos );
 10    dbms_output.put_line('a='||a);
 11    dbms_output.put_line('b='||b);
 12    dbms_output.put_line('c='||c);
 13    dbms_output.put_line('d='||dblink);
 14    dbms_output.put_line('n='||nextpos);
 15  end;
 16  /
a=PB_SEQUENCES
b=FCURORG
c=
d=NAIMFILLINK.WORLD
n=38
7 авг 08, 19:57    [6041472]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
tyrell lab
orawish
tyrell lab
Аналогичная ошибка

[1]: (Error): ORA-06550: line 2, column 5: PLS-00201: identifier 'PB_SEQUENCES.FCURORG@NaimFilLink.WORLD' must be declared ORA-06550: line 2, column 5: PL/SQL: Statement ignored

наиболее вероятно - в вашей залинковской процедуре есть (недефолтные) параметры.
вы её вызываете без параметров - т.е. с точки зрения сервера такой (так перегруженной)
процедуры нет.


в процедуре нет параметров ни IN ни OUT

ну а если процедура таки есть, то остается выяснить:
1) тот ли линк
2) тот ли узер_за_линком / (есть ли доступ)

ну и (лично я ;) не делал бы линков с точкой (и прочим всяким хламом) в имени
7 авг 08, 20:01    [6041482]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
tyrell lab
Member

Откуда:
Сообщений: 41
orawish
tyrell lab
Denis Popov

NaimFilLink - это параметр, передаваемый в процедуру? Чему он равен?
Posted via ActualForum NNTP Server 1.4


это не параметр, а наименование линка


судя по следующему - имя линка у вас чуток другое..

SQL> set serveroutput on
SQL> declare
  2    a varchar2(30);
  3    b varchar2(30);
  4    c varchar2(30);
  5    dblink varchar2(1000);
  6    nextpos binary_integer;
  7  begin
  8    dbms_utility.name_tokenize('PB_SEQUENCES.fcurorg@NaimFilLink.WORLD'
  9      ,a ,b ,c ,dblink ,nextpos );
 10    dbms_output.put_line('a='||a);
 11    dbms_output.put_line('b='||b);
 12    dbms_output.put_line('c='||c);
 13    dbms_output.put_line('d='||dblink);
 14    dbms_output.put_line('n='||nextpos);
 15  end;
 16  /
a=PB_SEQUENCES
b=FCURORG
c=
d=NAIMFILLINK.WORLD
n=38


PB_SEQUENCES - имя пакета
FCURORG - имя процедуры
NAIMFILLINK.WORLD - имя линка, в предыдущем посте не до конца написал )
что здесь не так?
7 авг 08, 20:02    [6041486]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
tyrell lab
Member

Откуда:
Сообщений: 41
orawish
tyrell lab
orawish
tyrell lab
Аналогичная ошибка

[1]: (Error): ORA-06550: line 2, column 5: PLS-00201: identifier 'PB_SEQUENCES.FCURORG@NaimFilLink.WORLD' must be declared ORA-06550: line 2, column 5: PL/SQL: Statement ignored

наиболее вероятно - в вашей залинковской процедуре есть (недефолтные) параметры.
вы её вызываете без параметров - т.е. с точки зрения сервера такой (так перегруженной)
процедуры нет.


в процедуре нет параметров ни IN ни OUT

ну а если процедура таки есть, то остается выяснить:
1) тот ли линк
2) тот ли узер_за_линком / (есть ли доступ)

ну и (лично я ;) не делал бы линков с точкой (и прочим всяким хламом) в имени


1) линк правильный - select к таблице удаленной БД работает через него же
2) вот с юзером выясняю сейчас насчет доступа
7 авг 08, 20:06    [6041495]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение удаленной процедуры/функции через dblink  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
tyrell lab
..
PB_SEQUENCES - имя пакета
FCURORG - имя процедуры
NAIMFILLINK.WORLD - имя линка, в предыдущем посте не до конца написал )
что здесь не так?

вот теперь оно так ;)
7 авг 08, 20:12    [6041507]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить