Variable

Werbung
Interaktive Skripte
Variable
...sal = ? …
… deptno = ? …
.. ename = ? ...
Werte eingeben
während der Laufzeit.
Nutzer
SQL1 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Substitutionsvariable
• Mit SQL*Plus können Werte in Variablen
temporär gespeichert werden.
• Folgende Möglichkeiten
SQL2 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Die &-Substitutionsvariable
Eine Variable, die mit Ampersand (&)
beginnt, fordert den Nutzer zur Eingabe
eines Wertes ein.
SQL> SELECT
2 FROM
3 WHERE
empno, ename, sal, deptno
emp
empno = &employee_num;
– Einfaches Ampersand (&)
– Doppeltes Ampersand (&&)
– DEFINE und ACCEPT Kommandos
SQL3 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Enter value for employee_num: 7369
EMPNO ENAME
SAL
DEPTNO
--------- ---------- --------- --------7369 SMITH
800
20
SQL4 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Verwendung des SET VERIFY
Kommandos
Schaltet die Anzeige des Textes zur
Ausgabe vor und nach dem Kommando,
zeigt das Ersetzen der Variablen durch den
Wert.
SQL>
SQL>
2
3
SET VERIFY ON
SELECT empno, ename, sal, deptno
FROM
emp
WHERE
empno = &employee_num;
Zeichen- und Datumswerte mit
Variablen.
Die Variablen der Datums- und Zeichenwerte in einfache Apostrophe
SQL> SELECT ename, deptno, sal*12
2 FROM
emp
3 WHERE job='&job_title';
Enter value for job_title: ANALYST
Enter value for employee_num: 7369
old
3: WHERE empno = &employee_num
new
3: WHERE empno = 7369
...
SQL5 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Spezifikation von Spaltennamen,
Ausdrücken und Text zur Laufzeit
Verwendung von Substitutionsvariablen
als Ergänzung
• einer WHERE Bedingung
• einer ORDER BY Klausel
• eines Spaltenausdruckes
• eines Tabellennamens
• eines ganzen SELECT Statements
SQL7 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
ENAME
DEPTNO
SAL*12
---------- --------- --------SCOTT
20
36000
FORD
20
36000
SQL6 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Spezifikation von Spaltennamen,
Ausdrücken und Text zur Laufzeit
SQL>
2
3
4
SELECT
FROM
WHERE
ORDER BY
empno, ename, job, &column_name
emp
&condition
&order_column;
Enter value for column_name: sal
Enter value for condition: sal>=3000
Enter value for order_column: ename
EMPNO
--------7902
7839
7788
ENAME
---------FORD
KING
SCOTT
JOB
SAL
--------- --------ANALYST
3000
PRESIDENT
5000
ANALYST
3000
SQL8 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Die && Substitutionsvariable
Verwendung des Doppel-Ampersands (&&)
wenn der Wert der Variablen
wiederverwendet werden soll, ohne dass
der Nutzer mehrfach eingibt.
SQL> SELECT
2 FROM
3 ORDER BY
empno, ename, job, &&column_name
emp
&column_name;
Enter value for column_name: deptno
EMPNO ENAME
JOB
DEPTNO
--------- ---------- --------- --------7839 KING
PRESIDENT
10
7782 CLARK
MANAGER
10
7934 MILLER
CLERK
10
...
14 rows selected.
SQL9 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Definition von Nutzer-Variablen
• Zur Vordefinition von Variablen kann
man eines der beiden SQL*Plus
Kommandos verwenden:
– DEFINE: Erzeugt eine Variable vom
Typ CHAR
– ACCEPT: Liest eine Nutzer-Eingabe
und speichert sie in eine Variable.
SQL10 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Das ACCEPT Kommando
• Erzeugt eine formatierte Nutzer-Eingabeanforderung
• Definiert explizit eine NUMBER oder
DATE Datentyp-Variable
Beispiel für das ACCEPT
Kommando
ACCEPT
SELECT
FROM
WHERE
/
dept PROMPT 'Eingabe des Abteilungsnamens: '
*
dept
dname = UPPER('&dept')
Eingabe des Abteilungsnamens: Sales
• Verbirgt gegebenenfalls Eingaben
(HIDE)
DEPTNO DNAME
LOC
--------- -------------- ------------30 SALES
CHICAGO
ACCEPT variable [datatype] [FORMAT format]
[PROMPT text] {HIDE}
SQL11 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
SQL12 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
DEFINE und UNDEFINE Kommandos
• Eine definierte Variable kann zurückgesetzt
werden mit:
– dem UNDEFINE Kommando
– Exit SQL*Plus
• Man kann die Rücksetzung mit dem
DEFINE Kommando überprüfen
Das DEFINE Kommando
• Man kann eine Variable erzeugen, die
den Abteilungsnamen enthält
SQL> DEFINE deptname = sales
SQL> DEFINE deptname
DEFINE DEPTNAME
= "sales" (CHAR)
• Die Variable kann man wie jede andere
benutzen.
SQL> SELECT *
2 FROM
dept
3 WHERE dname = UPPER('&deptname');
SQL13 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Show echo
SQL14 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
SET Kommando Variable
• ARRAYSIZE {20 | n} Zeilenanzahl setzen
• Verwendung des SET Kommandos zur
Steuerung der Session.
SET system_variable value
• Überprüfung der SET 's mit dem SHOW
Kommando.
SQL> SET ECHO ON
SQL> SHOW ECHO
echo ON
SQL15 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
• COLSEP {_ | text} Spaltentrennung
• FEEDBACK {6 | n |OFF | ON}
unterdrückt Angabe Anzahl Sätze
• LINESIZE {80 | n} Zeilenlänge
• PAGESIZE {24 | n} Zeilen pro Seite
• TERMOUT {OFF | ON} Ausgabe des
Skriptes
SQL16 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
SQL*Plus Format Kommandos
Das COLUMN Kommando
Steuert die Ausgabe einer Spalte
• COLUMN [column option]
• TTITLE [text | OFF | ON]
• BTITLE [text | OFF | ON]
• BREAK [ON report_element]
COL[UMN] [{column|alias} [option]]
• CLE[AR]: löscht die Spalten-Formate
• FOR[MAT] format: Ändert die Ausgabe
nach den FORMAT-Angaben
• HEA[DING] text: Setzt eine Spaltenüberschrift
• JUS[TIFY] {align}: Richtet die Spaltenüberschrift nach rechts, links oder
zentriert aus,
SQL17 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
SQL18 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Beispiel für das COLUMN Kommando
COLUMN Format Elemente
• Eine Überschrift erzeugen
COLUMN ename HEADING 'Employee|Name' FORMAT A15
COLUMN sal JUSTIFY LEFT FORMAT $99,990.00
COLUMN mgr FORMAT 999999999 NULL 'No manager'
Element Description
Example
Result
An
Setzt die Ausgabebreite auf n
N/A
N/A
9
Platzhalter für eine Zahl
999999
1234
0
Erzwingt eine Vornull
099999
01234
$
Dollarzeichen
$9999
$1234
.
Position Dezimalpunkt
9999.99
1234.00
,
Tausender Separator
9,999
1,234
• Spaltenfestlegungen überprüfen
COLUMN ename
• Spaltenfestlegungen zurücksetzen
COLUMN ename CLEAR
SQL19 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
SQL20 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Verwendung des BREAK
Kommandos
Unterdrückung von Duplikaten und
Zeilenumbrüche
• Duplikate unterdrücken
Verwendung der TTITLE und
BTITLE Kommandos
Kopfzeilen und Fusszeilen
TTI[TLE] [text|OFF|ON]
SQL> BREAK ON ename ON job
• Gesamtreport umbrechen
• Kopfzeile für den Report
SQL> TTITLE 'Salary|Report'
SQL> BREAK ON report
• Leerzeilen und Duplikate unterdrücken
• Fusszeile für den Report
SQL> BREAK ON ename SKIP 4 ON job SKIP2
SQL> BTITLE 'Confidential'
SQL21 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Erzeugen eines Skriptfiles und
Erweiterung zum Report
1. Erzeuge ein SQL SELECT Statement.
2. Speichere das SELECT Statement in
ein Skriptfile.
3. Lade das Skriptfile in einen Editor.
4. Füge Format-Kommandos vor das
SELECT Statement.
SQL23 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
SQL22 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Erzeugen eines Skriptfiles und
Erweiterung zum Report
5. Füge die Formatlösch-Kommandos
hinter das SELECT statement.
6. Speichere das Skriptfile
7. Gib “START filename” zur Abarbeitung
des Skriptes ein.
SQL24 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
Beispielreport
Fri Oct 24
page
Employee
Report
Job
Category
----------------------CLERK
CLERK
CLERK
CLERK
MANAGER
MANAGER
MANAGER
SALESMAN
SALESMAN
SALESMAN
SALESMAN
Employee
Salary
----------------------- ----------------ADAMS
$1,100.00
JAMES
$950.00
MILLER
$1,300.00
SMITH
$800.00
BLAKE
$2,850.00
CLARK
$2,450.00
JONES
$2,975.00
ALLEN
$1,600.00
MARTIN
$1,250.00
TURNER
$1,500.00
WARD
$1,250.00
Confidential
SQL25 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved
1
Herunterladen