Oracle SQL anpassen um variable zu nutzen

LokiA

Mitglied
Hi,

Ich habe folgendes SQL script das ich gerneverbessern würde.
Im Script werden im prinzip zuerst die Daten zu einem User gesucht basierend auf seiner Mail adresse,
anschließend auch witere daten aus anderen tabelen die mitder User ID verknüpft sind.

Folgendes würde ich gerne ändern:
1) Ich würde gerne für das Sub-Select in den abfragen gerne eine Variale utzen,
so das nicht immer (SELECT ID FROM SCHEMA_X.SITE_USER WHERE EMAIL ='&TOFIND'); schriebn muss, sondern es an einer stelle habe und überaöl so wie das '&TOFIND' nutzen kann.
ich habe es mit DEFINE versucht und auch mit anderen herangehensweißen, aber das skript schlägt dann immer fehl/verlangt manuelle eingaben.

2) In dem ersten Select habe ich eine LANGUAGE_ID. diese würde ich gerne mit dem konkreten Namen der language ersetzten der in einer anderen tabelle steht.
wie kann man das am elegantesten lösen?

Ich nutze eine Oracle Datenbank - will aber bei dem Script so generisch wie möglich bleiben.

Code:
DEFINE TOFIND='tofind@example.com';

spool OUTPUTFILE.out
prompt StartSeacrhing by '&TOFIND'

SELECT
'ID;NAME;LAST_LOGIN;EMAIL_ADDRESS;FIRST_NAME;LAST_NAME;BLABLA;LANGUAGE_ID;'
FROM
DUAL;

SELECT
ID||';'||NAME||';'||LAST_LOGIN||';'||EMAIL||';'||FIRST_NAME||';'||LAST_NAME||';'||BLABLA||';'||LANGUAGE_ID||';'
FROM
SCHEMA_X.SITE_USER
WHERE
EMAIL ='&TOFIND';


prompt Feedback messages
prompt ID;SUBJECT;MESSAGE;TIMESTAMP;

SELECT
ID||';'||SUBJECT||';'||MESSAGE||';'||TIMESTAMP||';'
FROM
SCHEMA_X.SITE_FEEDBACK
WHERE
USER_ID = (SELECT ID FROM SCHEMA_X.SITE_USER WHERE EMAIL ='&TOFIND');

prompt Other Entries
prompt ID;TITLE;BLABLA;TIMESTAMP;

SELECT
ID||';'||TITLE||';'||BLABLA||';'||TIMESTAMP||';'
FROM
SCHEMA_X.SITE_ENTRY
WHERE
USER_ID = (SELECT ID FROM SCHEMA_X.SITE_USER WHERE EMAIL ='&TOFIND');

spool off;
 

mihe7

Top Contributor
Oracle ist bei mir schon eine Zeit her, folgendes sollte aber in etwa funktionieren:

1)
Code:
DEFINE TOFIND='tofind@example.com';
VARIABLE userid NUMBER
EXEC SELECT id INTO :userid FROM SCHEMA_X.SITE_USER WHERE EMAIL='&TOFIND';

SELECT ... FROM ... WHERE USER_ID = :userid;

2) Mit einem JOIN, z. B. etwas wie
Code:
SELECT
u.ID||';'||u.NAME||';'||u.LAST_LOGIN||';'||u.EMAIL||';'||u.FIRST_NAME||';'||u.LAST_NAME||';'||u.BLABLA||';'||l.LANGUAGE_NAME||';'
FROM
SCHEMA_X.SITE_USER u INNER JOIN SCHEMA_X.LANGUAGES l ON u.language_id = l.id
WHERE
EMAIL ='&TOFIND';
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Datum anpassen in Oracle Datenbankprogrammierung 5
S Variable in main soll mit der generierten Zahl aus einer Methode ausgefüllt werden Datenbankprogrammierung 3
N SQL-Statement Java Variable in SQL DB einfügen Datenbankprogrammierung 1
C Derby/JavaDB Auf Variable aus Link in java server page zugreifen Datenbankprogrammierung 4
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
A Fehlermeldung: JOIN FETCH expressions cannot be defined with an identification variable Datenbankprogrammierung 0
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
H datantyp einer variable ermittel mit sql Datenbankprogrammierung 3
C Variable in MySQL einfügen Datenbankprogrammierung 2
T Daten aus DB in variable Zahl an Variablen speichern Datenbankprogrammierung 18
A Connection Variable in anderer Klasse verwenden -> statement Datenbankprogrammierung 2
S Integerwert auswerten und als Variable speichern Datenbankprogrammierung 2
P Inhalt einer Variable in Datenbank schreiben Datenbankprogrammierung 13
G \'\"+Variable+'\"\ Datenbankprogrammierung 7
MongoDB_Datenbank in AndroidStudio nutzen Datenbankprogrammierung 8
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
J Programm <> Datenbank wie effizient nutzen? Datenbankprogrammierung 3
J jdbc-dataSource in Klassen nutzen Datenbankprogrammierung 2
S Datenbank nutzen-wie? Datenbankprogrammierung 8
V MySQL MsSql ohne Server nutzen? Datenbankprogrammierung 2
S Parameter in SQL-Abfrage nutzen Datenbankprogrammierung 8
M komplettNoob-Fragen: MySQL mit NetBeans nutzen Datenbankprogrammierung 13
K Datenbank eines Forums nutzen Datenbankprogrammierung 11
G Fremdschlüssel nutzen. InnoDB <--> MyISAM Datenbankprogrammierung 5
T MySQL mit JSP nutzen Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben