Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: DBMS_SESSION.set_context
Obviously, you can't do the set_context as an 'exec' that would defeat
the purpose of a context. Only the dmContextPack should be able to do
that. I compiled this code on an 8.1.7 database and it ran without any
problems. The context was set properly. Are you sure that you don't
get an error that's being trapped by that 'when others' clause?
Richard
Eva Haiden wrote:
>
> Dear oracle users,
>
> I try to create an application context to be used with an security
> policy. The select in the below database package works, but the
> context does not get set. Any idea why this could be?
>
> Also, when I run
> exec dbms_session.set_context('carambaContext', 'datamangerID', 2) by
> itself, I get the following error message:
>
> *
> FEHLER in Zeile 1:
> ORA-01031: Unzureichende Berechtigungen
> ORA-06512: in "SYS.DBMS_SESSION", Zeile 78
> ORA-06512: in Zeile 1
>
> The context creation is as following:
>
> CREATE CONTEXT xxxContext USING xxx.dmContextPack;
>
> CREATE OR REPLACE PACKAGE dmContextPack as
>
> PROCEDURE setDatamanagerID;
> PROCEDURE showContext (context_name VARCHAR2, context_attribute
> VARCHAR2);
>
> END dmContextPack;
>
> CREATE OR REPLACE PACKAGE BODY dmContextPack IS
>
> PROCEDURE setDatamanagerID IS
>
> datamanID NUMBER;
>
> BEGIN
>
> select id
> into datamanID
> from xxx_datamanager
> where upper(dm_user) = SYS_CONTEXT('USERENV', 'session_user');
>
> dbms_session.set_context('xxxContext', 'datamangerID',
> datamanID);
> DBMS_OUTPUT.PUT_LINE ('datamanID: ' || datamanID);
> DBMS_OUTPUT.PUT_LINE ('Attribute is set now:');
> DBMS_OUTPUT.PUT_LINE ('datamanagerID: ' ||
> SYS_CONTEXT('xxxContext',
> 'datamanagerID'));
>
> EXCEPTION
> WHEN NO_DATA_FOUND
> THEN
> DBMS_OUTPUT.PUT_LINE ('No data found');
> WHEN OTHERS THEN
> DBMS_OUTPUT.PUT_LINE ('When others clause reached:');
> DBMS_OUTPUT.PUT_LINE ('datamanID: ' || datamanID);
>
>
> END setDatamanagerID;
>
>
>
> PROCEDURE showContext (context_name VARCHAR2, context_attribute
> VARCHAR2) IS
> BEGIN
>
> DBMS_OUTPUT.PUT_LINE (context_name || ' = ' ||
> SYS_CONTEXT(context_name,
> context_attribute));
>
> END showContext;
>
> END dmContextPack;
Received on Mon Mar 04 2002 - 12:13:15 CST
![]() |
![]() |