2016-05-10 4 views
-3

Ich muss Name des Jobs auswählen, von dem die Funktion aufgerufen wurde, in der ich diese Abfrage benötige, aber leider kann ich es nicht herausfinden, kann mir jemand helfen? Danke ;-)Wie Name von Job in Oracle bekommen

+0

Plz reframe Ihre Frage. Nicht in der Lage zu verstehen –

+0

Ich habe Funktion (aus verschiedenen Jobs aufgerufen), in denen ich einige Daten sammeln und einen Snapshot erstellen, Snapshots werden dann in der Tabelle und in der letzten Ausführung von Job eingefügt. Ich möchte .zip Snapshots von diesem Job erstellen . Also muss ich einen eindeutigen Bezeichner des Jobs hinzufügen, der meine Funktion für jeden von dieser Funktion erstellten Snapshot aufruft. – Silverrook

Antwort

1

Ich vermute, was Sie tun möchten, kann mit einem User defined Context getan werden.

Um zuerst einen benutzerdefinierten Kontext verwenden zu können, müssen Sie eine vertrauenswürdige Prozedur erstellen, die zum Festlegen von Attributen im Kontext verwendet wird. Wir müssen dies tun, weil dbms_session.set_context nicht direkt verwendet werden kann.

create procedure set_test_ctx 
(
    p_attribute_name in varchar2, 
    p_attribute_value in varchar2 
) is 
begin 
    dbms_session.set_context(
     'test_ctx', 
     p_attribute_name, 
     p_attribute_value); 
end; 
/

Danach werden wir unseren Kontext

create context test_ctx using set_test_ctx; 

erstellen Wenn Sie diesen Zusammenhang mit einem anderen Benutzer vergessen Sie nicht, einen Zuschuss zur Ausgabe verwenden müssen.

grant execute on set_test_ctx to test_user; 

Jetzt können Sie das Verfahren verwenden, um den Kontext zu verwenden und die Ansicht „session_context“ oder die Funktion SYS_CONTEXT verwenden, um den Wert retreive.

execute set_test_ctx('ATTRIBUTE1', 'value1'); 

select value from session_context where namespace='TEST_CTX' and ATTRIBUTE='ATTRIBUTE1'; 

select sys_context('TEST_CTX','ATTRIBUTE1') as value from dual; 
Verwandte Themen