Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: DBMS_SESSION.set_context

Re: DBMS_SESSION.set_context

From: Richard Kuhler <noone_at_nowhere.com>
Date: Mon, 04 Mar 2002 18:13:15 GMT
Message-ID: <%OOg8.6146$Gu6.3125743@typhoon.san.rr.com>


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

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US