änderten wir vor kurzem eine der Datenbanken entwickle ich auf von Oracle auf LDAP-Benutzerkonten Konten und alles ging gut für das vordere Ende von den Mitarbeitern verwendet, die auf das System zugreifen. Allerdings haben wir eine zweite Methode des Eintrags des Server-Betreiber Personal beschränkt, das die Daten auf die Datenbank und eine Menge Verarbeitung laden wird mit dem dbms_scheduler genannt. Die meisten der Datenbanktabellen haben eine created_by-Spalte, die standardmäßig ihren Benutzernamen von einem sys_context abruft, aber wenn die Datenladungen von dbms_scheduler ausgeführt werden, sind diese Informationen nicht verfügbar und daher werden die created_by-Spalten alle mit APP_GLOBAL gefüllt.Oracle Globale temporäre Tabellen und Verwendung von gespeicherten Prozeduren und Funktionen
Ich habe es geschafft, eine Globale temporäre Tabelle (GTT) mit dem Wert sys_context aufzufüllen und diese zu verwenden, um created_by aus einer gespeicherten Prozedur von dbms_scheduler zu füllen, so dass mein nächster logischer Schritt war, dies in eine Funktion zu setzen und es so zu nennen Es könnte im gesamten System verwendet oder sogar von einem Trigger vor dem Einfügen referenziert werden.
Das Problem ist, wenn Sie den Code in eine Funktion die Daten aus dem GTT setzen nicht gefunden wird. Die Tabelle ist so festgelegt, dass Zeilen beibehalten werden.
Ich habe viele eine Website für eine Antwort surften aber haben nichts mir jemand hier eine Lösung bieten kann helfen gefunden?
Jack, ich habe es geschafft, die GTT für die gleiche Sitzung wie der dbms_scheduler zu füllen und kann daraus auswählen. Ich stelle den Code in eine Funktion, so dass er von allen gespeicherten Prozeduren referenziert werden kann, die vom Scheduler ausgeführt werden, aber wenn auf die Funktion verwiesen wird, werden keine Daten von der GTT zurückgegeben. Ihre Annahme über created_by ist fast korrekt, der Ausdruck ist der Standardwert der Spalte und nicht in einem Trigger. – Colin
@Colin Entschuldigung - der Verweis auf Trigger war ein Tippfehler –
@Colin der Scheduler wird eine andere Sitzung für jeden Job verwenden, die es ausführt –