Помогите найти ошибку в logon-тригере на 8.1.7

workman
Дата: 10.12.2007 18:16:28
Создана процедура, выдающая при запуске ошибку.

create or replace package body pk_test is
  procedure test is
begin
   raise_application_error(-20001,'logon error');
end;
end pk_test;

Создан тригер на подключение к схеме, вызывающий эту процедуру:

create or replace trigger t_after_logon
  after logon on <my_schema>.Schema
begin
  <my_schema>.pk_test.test;
end;


Далее в клиенте (Delphi7+DOA) создаю две кнопки : первая - реконект и запуск процедуры, вторая - реконект и выборка из dual.
Так вот во втором случае ошибка не возникает. Может ошибка и не в тригере вовсе?
Jannny
Дата: 10.12.2007 18:18:45
Есть ещё какая-то разница. Симитируйет без Дельфей
ERROR MESSAGE
Дата: 10.12.2007 18:36:10
workman
Далее в клиенте (Delphi7+DOA) создаю две кнопки : первая - реконект и запуск процедуры, вторая - реконект и выборка из dual.
Так вот во втором случае ошибка не возникает. Может ошибка и не в тригере вовсе?
Ибо пользователь-владелец триггера у тебя, друже,
имеет привилегию ADMINISTER DATABASE TRIGGER?
ERROR MESSAGE
Дата: 10.12.2007 18:36:52
И под ним же ты и заходишь?
SY
Дата: 10.12.2007 18:54:12
Jannny
Есть ещё какая-то разница. Симитируйет без Дельфей


Есть:

SQL> create user u1 identified by u1;

User created.

SQL> grant create session,create procedure,create trigger to u1;

Grant succeeded.

SQL> create user u2 identified by u2;

User created.

SQL> grant create session,create any trigger to u2;

Grant succeeded.

SQL> connect u1/u1
Connected.
SQL> create or replace package pk_test is
  2  procedure test;
  3  end;
  4  /

Package created.

SQL> create or replace package body pk_test is
  2    procedure test is
  3  begin
  4     raise_application_error(-20001,'logon error');
  5  end;
  6  end pk_test;
  7  /

Package body created.

SQL> create or replace trigger t_after_logon
  2    after logon on u1.Schema
  3  begin
  4  u1.pk_test.test;
  5  end;
  6  /

Trigger created.

SQL> connect u1/u1
Connected.
SQL> grant execute on u1.pk_test to u2;

Grant succeeded.

SQL> connect u2/u2
Connected.
SQL> create or replace trigger t_after_logon
  2    after logon on u1.Schema
  3  begin
  4  u1.pk_test.test;
  5  end;
  6  /

Trigger created.

SQL> connect u1/u1
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20001: logon error
ORA-06512: at "U1.PK_TEST", line 4
ORA-06512: at line 2


Warning: You are no longer connected to ORACLE.
SQL> 

SY.
workman
Дата: 11.12.2007 09:15:39
ERROR MESSAGE
И под ним же ты и заходишь?

Да - это и было ошибкой.
Пример приведенный перед этим постом показывает суть этого эффекта.
Спасибо.
workman
Дата: 11.12.2007 10:34:11
Народ, ткните плиз мне на строку документации, где описана моя ошибка.
Я лишь смог найти вот это:
"Triggers are implicitly fired by Oracle when a triggering event occurs, no matter which user is connected or which application is being used."
(c) Oracle8i Concepts