Zum Inhalt springen

tuningmaster

Mitglieder
  • Gesamte Inhalte

    271
  • Benutzer seit

  • Letzter Besuch

  1. Danke. Damit bekomme ich das Skript ausgegeben. Vielleicht habe ich meine Frage falsch gestellt...Wie kann ich mir das Ergebnis aus dem SQL Selects in der Prozedur ausgeben lassen? Damit ich sehe, ob das eingebettete SQL Select in der Prozedur auch das richtige Ergebnis liefert?! VG Michael
  2. Danke für die Info. Als Ausgabe sagt mir der Developer: anonymer Block abgeschlossen. Als Ausgabe hätte ich erwartet, dass mir die Prozedur den "testuser" ausgibt. :/
  3. Hallo, wenn ich die folgende SQL Prozedur ausführe, erhalte ich kein Ergebnis. create or replace PROCEDURE USER_Ausgabe IS v_user dim_user.user_name %type; BEGIN SELECT user_name INTO v_user FROM dim_user where user_name like '%testuser%'; DBMS_OUTPUT.PUT_LINE(v_user); END; Mit dem u.g. Befehl müsste ich mir ja zumindest die Ausgabe der Prozedur ausgeben lassen: SELECT text FROM all_source WHERE name = 'user_ausgabe' ORDER BY line Habe ich in der SQL Prozedur irgendetwas vergessen? Die Prozedur wird lt. Developer erfolgreich kompiliert. Gruß Michael
  4. Momentan "Broilers" und "Blink182"....Wobei ab und zu auch mal Skorpions dabei sind...
  5. Habs....mit "not exists" komme ich auf mein Ergebnis....Muss das hier nochmal bei den anderen Profilen prüfen. Vielen Dank für eure Ratschläge und Tipps.... Viele Grüße Michael
  6. Ohne AS und mit Tabellenname.Tabellenspalte bekomme ich zwar keine Fehlermeldung, aber auch kein Ergebnis ausgespuckt...Irgendwo ist hier noch der Wurm drin. Die Ausgabe von Jimbo funktioniert schon fast: Bspw. Profil 1: Rolle 1,2,3 Profil 2: Rolle 1,2,3,4,5,6 Wenn ich Profil 1 abfrage, bekomme ich das richtige Ergebnis...Das klappt jetzt wunderbar.... Nur wenn ich Profil 2 abfrage, erhalte ich alle User aus Profil 1 und Profil 2 ....Die User aus Profil 1 sollen ja nicht in die Wiedergabe... (das funktioniert) SELECT User_Name FROM DIM_USER WHERE EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID = 1) and EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID IN(2)) and EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID IN(3)) (hier gibt er mir zu Profil2 noch alle User aus Profil1 mit aus, so sollte das natürlich nicht sein) SELECT User_Name FROM DIM_USER WHERE EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID = 1) and EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID IN(2)) and EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID IN(3)) and EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID IN(4)) and EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID IN(5)) and EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID IN(6))
  7. Hey, wenn ich die exists kopiere / einfüge und mit anderen Rollen ID´s belege, erhalte ich leider immer noch zuviele User in der Wiedergabe. Bspw. Exists .....ID 1 .....Exists ID 2 .....Exist ID 3..... Ziel: 1+3 Wiedergabe: User mit ID (1+3) und User mit (1+3 zusätzlich 2). Plopp....mir ist gerade der Geduldsfaden gerissen mit dieser Datenbank ^^
  8. Genau, ich habe folgende Anforderung: Profil1 soll können: Planen Profil2 soll können: Kalkulieren Profil3 soll können: Nach SAP abgeben Profil4 soll können: Löschen User A besitzt Rolle 1 + 3 User B besitzt Rolle 1 User C besitzt Rolle 3 User D besitzt Rolle 1+4 User E besitzt Rolle 5 User F besitzt Rolle 6 User F besitzt Rolle 1+7 Ziel: Gib alle Benutzer aus, die nur Rolle 1+3 oder bspw. 1+4 haben. Mit diesem Skript gibt der Developer mir alle User aus, die Rolle 1 + n Rollen haben, Rolle 3 +n Rollen haben, Rolle 1+3 haben (was ja auch richtig wäre). SELECT User_Name FROM DIM_USER WHERE EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID = 1) AND EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID IN(3));
  9. Also man muss sich vorstellen, wir haben 30 Rollen zur Auswahl. Die User haben manchmal 4, manchmal 6 oder manchmal auch nur 1 Rolle im Profil vorhanden. Bei der o.g. SQL Abfrage erhalte ich User mit den Rollen (1,2,5,6 und weitere Rollen wie z.B. 30). Das verfälscht das gewünschte Ergebnis :/
  10. Habe das o.g. Skript nochmal ausgeführt. Trotz, dass ich dort ein "not in" eingefügt habe, gibt er mir alle User aus, die explizit die Rollen haben, die abgefragt werden sollen + weitere Rollen im Profil haben (bspw. Rolle ID 30). Das "not in" interessiert die SQL Abfrage überhaupt gar nicht..Mit und Ohne "not in" bekomme ich immer 150 User ausgegeben. SELECT User_Name FROM DIM_USER WHERE EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID = 1) AND EXISTS(SELECT * FROM DIM_USER_ROLLE WHERE DIM_USER_ROLLE.UserID = DIM_USER.UserID AND DIM_USER_ROLLE.Rolle_ID IN(2,5,6) and dim_user_rolle.rolle_ID not in 30);
  11. Ich bekomme bei deinem Skript folgenden Fehler: Fehler beim Start in Zeile 1 in Befehl: SELECT t1.UserID FROM DIM_USER_ROLLE as t1 INNER JOIN DIM_USER_ROLLE as t2 ON t1.UserID = t2.UserID WHERE t1.Rolle_ID = 1 AND t2.Rolle_ID = 4 OR t1.Rolle_ID = 1 AND t2.Rolle_ID = 3 Fehler bei Befehlszeile:1 Spalte:37 Fehlerbericht: SQL-Fehler: ORA-00933: SQL-Befehl wurde nicht korrekt beendet 00933. 00000 - "SQL command not properly ended" *Cause: *Action: SELECT t1.UserID FROM DIM_USER_ROLLE as t1 INNER JOIN DIM_USER_ROLLE as t2 ON t1.UserID = t2.UserID WHERE t1.Rolle_ID = 1 AND t2.Rolle_ID = 4 OR t1.Rolle_ID = 1 AND t2.Rolle_ID = 3 ;
  12. Hallo Jimbo, das Skript habe ich auf die richtigen Tabellennamen modifiziert. Das läuft fehlerfrei durch. Irgendwie bekomme ich trotzdem zuviele User angezeigt. Da sind ganz viele User bei, die die Rolle 1 und 3 haben, die 4. jedoch nicht. Trotzdem erscheinen die in der Ausgabe. Hmm...kann SQL so etwas überhaupt??
  13. Hallo Klotzkopf, damit würde er mir auch alle anderen tausend User ausgeben, die nur Rolle "1" besitzen. Ziel ist es nur die User mit Rolle 1+3 bzw. 1+4 wiederzugeben :/
  14. Hi, das sieht dann so aus. |U_ID|R_ID | | 1 |1| | 1 |2| | 1 |3| Viele Grüße Michael
  15. Tabelle "XXX_USER" <<--Zuordnungstabelle Userid zum Usernamen Spalte: UserID Spalte: USER_NAME Tabelle "XXX_USER_ROLLE" <<-- Hier hat ein User ggf. n-Rollen Spalte: UserID Spalte: Rolle_ID Tabelle "XXX_ROLLE" <<-- Definitionstabelle Rolle_ID zu Beschreibung (Was macht die Rolle) (Ist aber nur als Info gedacht, wird nicht im SQL Skript verwendet) Spalte: Rolle_ID Spalte: Rolle_Beschreibung_zur_ID

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...