Kein Folientitel

Werbung
(*)
IBM DB2 V8
for z/OS
Neue Funktionen für AE und
Applikationsprogramme
(DB2-V8_AE_APneu)
(*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc.
Jan 2005
1
Neue AP Funktionen
3.1
„dynamic scrollable Cursors“
3.2
SQL/PL Funktionen
3.3
STP und Procedure Verbesserungen
3.4
Neue Spezialregister
3.4.1 SET Current Schema
3.4.2 SET Current PACKAGEPATH
Jan 2005
3.5
ODBC Verbesserungen
3.6
Implizite RRSAF Verbindungen
3.7
Neue XML Funktionen
2
Neue AP Funktionen
3.1 „dynamic scrollable Cursors“
„Scrollable cursor“, die den Zugriff auf die „the base table“ anders zulassen
als eine DTT – ermöglichen das Sichtbarwerden von eigenen und fremden
„updates“ und „inserts“
Führt als Default einen „single row FETCH“ aus. DDF Applikationen sollten::
• Multi-row FETCH
• Positioned UPDATE/DELETE for multi-row FETCH
verwenden.
DECLARE C1 SENSITIVE DYNAMIC SCROLL
CURSOR FOR
SELECT C1, C2
FROM
T1;
Jan 2005
3
Neue AP Funktionen
3.1.1 „Scrollable Cursor“ - Wiederholung
• Implizit über „temporary tables“ (Anwendungs-Scope),
d.h. Zugriff auf TEMPDB erforderlich
• Zwei unterschiedliche Typen
1. Insensitive

Keine Verbindung zu Basis-Daten
2. Static Sensitive
Implizite Synchronisierung über RID und
Re-Evaluierung des WHERE ...
• Syntax-Erweiterungen für DECLARE und FETCH
• Neue SQLCODE‘s beim Zugriff auf nicht(mehr)
existente „Cursor“-Daten
Jan 2005
4
Neue AP Funktionen
3.1.2 Scrollable Cursor Typen
Insensitive scrollable cursor
• immer „static“
• Feste Anzahl „rows“
• Nutzung von „Declared temp tables“
Sensitive static scrollable cursor
•
•
•
•
immer „static“
Feste Anzahl „rows“
Nutzung von „Declared temp tables“
Sensitive auf Änderungen, aber nicht auf INSERT‘s
Sensitive dynamic scrollable cursor
• „direct table access“
• „live data access“
Jan 2005
5
Neue AP Funktionen
3.1.3 Scrollable Cursor - Syntax
DECLARE cname
INSENSITIVE
SCROLL
STATIC SENSITIVE
CURSOR
Jan 2005
....
6
Neue AP Funktionen
3.1.4 Scrollable Cursor – (Cursordefinitionen)
• Read only cursor
• Not aware of updates
or deletes in base
table
• Updatable cursor
• Updatable cursor
• Aware of own updates or
deletes within cursor
• Aware of own updates and
deletes within cursor
• Other changes to base
table not visible to cursor
• All inserts not recognized
Jan 2005
• sees all committed updates and
deletes
• All inserts not recognized
7
Neue AP Funktionen
3.1.5 Öffnen eines „Scrollable Cursor“
DECLARE curs1 SENSITIVE SCROLL CURSOR
WITH HOLD FOR
SELECT
account, account_name, credit_limit
,
type
FROM
account
WHERE
account = :in_account
ACCOUNTTabelle
.....
OPEN curs1 ....
Result Set
-DB2 erzeugt eine TEMP Tabelle
- der Zugriff ist „exklusiv“
- es existiert eine fixe Anzahl „rows“
- Tabelle wird zum Zeitpunkt
„CLOSE CURSOR“ gelöscht
- erfordert TEMP DB und
vordefinierte TS
Jan 2005
RESULT
SET
FETCH...
8
Neue AP Funktionen
3.1.6 Scrollable Cursor – FETCH
Ergebnismenge
Aktuelle Position
BEFORE
ABSOLUTE 0
FIRST
ABSOLUTE 1
PRIOR
CURRENT
NEXT
LAST
RELATIVE -1
RELATIVE 0
RELATIVE +1
ABSOLUTE -1
AFTER
Jan 2005
9
3. Neue
Neue
APAP
Funktionen
Funktionen
3.1.7 Scrollable Cursor – neue Attribute
SENSITIVE DYNAMIC
• Gibt an, dass die Grösse der RT nicht zum Zeitpunkt des OPEN Cursor festgelegt wird
• Der Cursor ist vollständig sensibel auf Änderungen
- Alle „committed“ inserts, updates, deletes durch andere AP Prozesse
- Alle „positioned updates“ und „deletes“ innerhalb des Cursors
- Alle inserts, updates, deletes durch denselben AP Prozess, aber ausserhalb des Cursors
• Der FETCH erfolgt gegen die „base table“ da keine temporary result table erstellt wird
ASENSITIVE
• DB2 entscheidet über die „sensitivity of cursor“
• Wenn „read-only“...
- Cursor ist INSENSITIVE wenn das SELECT Statement SENSITIVE nicht erlaubt (UNION,
UNION ALL, FOR FETCH ONLY, FOR READ ONLY)
- Er verhält sich wie ein „insensitive cursor“
• Wenn „not read-only“, wird SENSITIVE DYNAMIC für ein Maximum an „sensitivity“ stehen
• Vorwiegend sinnvoll für Client AP, die sich nicht darum kümmern, ob die Server „sensitivity“ oder
„scrollability“ unterstützen
Jan 2005
10
Neue AP Funktionen
3.1.7 Scrollable Cursor – FETCH Syntax (keine Änderung)
FETCH
INSENSITIVE
SENSITIVE
NEXT / PRIOR / FIRST / LAST /
CURRENT /BEFORE / AFTER
ABSOLUTE
integer
RELATIVE
host-variable
*
*) Typ integer oder
DECIMAL (18,0)
FROM
cursorname
Jan 2005
11
Neue AP Funktionen
3.1.7 Scrollable Cursor – Einflüsse auf FETCHes
INSENSITIVE geht nicht im FETCH Statement (SQLCODE -244) wenn
• zugehörige Cursor mit SENSITIVE DYNAMIC SCROLL definiert ist
• Der Cursor als ASENSITIVE deklariert wurde und DB2 die maximale
mögliche „sensitivity“ bei SENSITIVE DYNAMIC SCROLL vorgibt
Es gibt KEINE "holes" , da es KEINE „temporary result table“ gibt
• Spezialfall: Wenn FETCH CURRENT oder FETCH
RELATIVE +0 gefordert wurde, aberdie „row“ auf die
der Cursor positioniert war, gelöscht oder geändert
wurde, sodass sie nicht mehr zur Resultatsmenge
gehört (SQLCODE +231)
• Beispiel: bei ISOLATION(CS) und CURRENTDATA(NO)
Inserts durch das eigene AP sind unmittelbar sichtbar
fremde inserts sind NACH COMMIT sichtbar
Die Reihenfolge wird IMMER gepflegt
• Wenn die „current row“ „updated“, der Cursor vor die „next row“der ursprünglichen
Position „positioned“ wurde und es keine „current row“ gibt
Jan 2005
12
Neue AP Funktionen
3.1.8 Locking bei Dynamic Scrollable Cursors
ISOLATION CS ist empfohlen („maximum concurrency“)
RR / RS behindern „updates“ durch andere User auf die Tabelle, in diesem Fall sollte man
SENSITIVE DYNAMIC vermeiden
Lock wird auf die „current row“ gesetzt, da die „base table“ immer direkt
zugegriffen wird
Wie schon immer wird die ISOLATION UR als BIND Option auf CS
angehoben, wenn das SELECT … FOR UPDATE OF… enthält
Normalerweise werden, falls der Cursor mit WITH HOLD definiert wurde, die
Locks zum Zeitpunkt COMMIT freigegeben, ausser der Parameter DSNZPARM
RELCURHL=NO ist gesetzt.
„Optimistic locking“ wird bei „static scrollable cursors“ angewendet
„Static scrollable cursors“ – keine Locks auf die „base tables“ nach OPEN CURSOR
„Check at update time“
KEIN „Optimistic locking“ bei „dynamic scrollable cursors“ (wie bei „non-scrollable
cursors“)
Positioned UPDATE und DELETE sind IMMER erlaubt, wenn der Cursor nicht
„read-only“ und ein „page“- oder „row“- Lock erfolgreich angefordert ist
Jan 2005
13
Neue AP Funktionen
3.1.9 Scrollable Cursor – FETCH(Beispiele)
Absolute Cursorbewegung:
FETCH ... ABSOLUTE + 5 FROM curs1; oder
MOVE 5 TO cursor-position
FETCH ... ABSOLUTE :cursor-position FROM curs1
Relative Cursorbewegung:
FETCH ... RELATIVE - 5 FROM curs1; oder
MOVE -5 TO cursor-move
FETCH ... RELATIVE :cursor-move FROM curs1
FETCH ... NEXT FROM curs1;
Neue FETCH – „keywords“
Jan 2005
NEXT, PRIOR, FIRST, LAST, CURRENT,
BEFORE, AFTER, ABSOLUTE, RELATIVE
14
Neue AP Funktionen
3.2.5 Dynamic Scrollable Cursor –Beispiele
DECLARE ORDERSCROLL SENSITIVE DYNAMIC SCROLL CURSOR FOR
SELECT
ORDERNUM, CUSTNAME, ORDERAMT, ORDERDATE
FROM
ORDERS
WHERE
ORDERAMT > 1 FOR UPDATE OF COMMENTS;
** Open scrollable cursor
OPEN
ORDERSCROLL;
** Fetch forward from scrollable cursor
** LOOP-TO-FILL SCREEN
DO 3 TIMES
FETCH FROM ORDERSCROLL INTO :hv1, :hv2, :hv3, :hv4;
END
** Fetch RELATIVE from scrollable cursor
** Skip forward 1 row
FETCH RELATIVE +1 FROM ORDERSCROLL INTO :hv1, :hv2, :hv3, :hv4;
** Skip backward 5 rows
FETCH RELATIVE -5 FROM ORDERSCROLL INTO :hv1, :hv2, :hv3, :hv4;
Jan 2005
15
Neue AP Funktionen
3.1.9 Dynamic Scrollable Cursor –Beispiele (Cont‘ned)
** Fetch ABSOLUTE from scrollable cursor
** Re-read the third row
FETCH ABSOLUTE + 3 FROM ORDERSCROLL INTO :hv1, :hv2, :hv3, :hv4;
** Fetch RELATIVE from scrollable cursor
** Read the third row from the current position
FETCH SENSITIVE RELATIVE +3
FROM ORDERSCROLL INTO :hv1, :hv2, :hv3, :hv4;
** Execute a positioned UPDATE through scrollable cursor
** Update the current row
UPDATE ORDERS SET COMMENTS = "Expedite"
WHERE CURRENT OF ORDERSCROLL;
** Close the scrollable cursor
CLOSE ORDERSCROLL;
Jan 2005
16
Neue AP Funktionen
3.1.10 Dynamic Scrollable Cursor – ein Vergleich
Jan 2005
Cursor Typ
Result Table
Non-Scrollable
(SQL mit JOIN,
Sort usw.)
Fixed, workfile
Eigene Än- Fremd-Änderungen
derungen
sichtbar ?
sichtbar ?
UpdateFähigkeit
No
No
No
Non-Scrollable
no workfile,
„base table access“
Yes
Yes
Yes
INSENSITIVE
SCROLL
Fixed, declared
temp table
No
No
No
SENSITIVE
STATIC
SCROLL
Fixed, declared
temp table
Yes
Yes
Keine INSERT‘s
Keine INSERT‘s
SENSITIVE
DYNAMIC
SCROLL
No declared
temp table, „base
table access“
Yes
Yes
Yes
Yes
17
Neue AP Funktionen
3.1.10 Dynamic Scrollable Cursor – ein Vergleich
„Scrollable cursor“ sind erlaubt:
und „dynamic“
 „static“
OS/390 compiled programs

compiled stored
procedures (inklusive „SQL stored
procedures“)
 ODBC
Jan 2005
„Scrollable cursor“ sind
nicht erlaubt für:




SPUFI und QMF
REXX Programme
Java Programme
„client“ Programme mit
DB2 Connect
18
Neue AP Funktionen
3.2 SQL/PL Funktionen für STP‘s
Vorteil .....
• Verbessert die Nutzbarkeit und „power“ der „SQL procedure language“ (PSM)
• DB2 Family Kompatibilität
• Konform zu den SQL Standards
V8 Verbesserungen
• Neue SQL „procedure statements“ zur Übergabe von STATUS Informationen
von der SQL Procedure an die rufende Applikation
-
RETURN Statement
SIGNAL/RESIGNAL Unterstützung
GET DIAGNOSTICS
ITERATE
• Verbesserte LOB und Variablen Unterstützung mit V8 SQL Statement Limit
Erweiterung auf 2MB
• Integrierter „debugger“
Jan 2005
19
Neue AP Funktionen
3.2 SQL/PL Funktionen für STP‘s - RETURN
Für eine SQL Procedur wird ein Statuswert im INTEGER Format an die
aufrufende Applikation zurückgegeben
Der „caller ´kann diesen Wert erhalten über:
•
•
•
RETURN_STATUS aus GET DIAGNOSTICS
Direkt aus der SQLCA in SQLERRD[0]
Return des „value parameter markers“ in der „escape Klausel“ der
CALL Syntax in CLI oder ODBC Applikationen
Zusätzliche GET DIAGNOSTICS Information
•
•
MESSAGE_TEXT Klausel enthält den aktuellen Meldungstext
MESSAGE_LENGTH Klausel enthält die Länge der aktellen Meldung
Für SQL „scalar functions“, wird
das Resultat der Funktion (V7)
zurückgeliefert
Return Value = 0 wenn erfolgreich, und -2 wenn nicht
BEGIN
....
GOTO FEHLER;
SUCCESS: RETURN;
FEHLER: RETURN -2
END;
Jan 2005
20
Neue AP Funktionen
3.2 SQL/PL Funktionen für STP‘s – SIGNAL/RESIGNAL
DECLARE EXIT HANDLER FOR SQLSTATE VALUE ‘23503’
SIGNAL SQLSTATE ‘75001’
SET MESSAGE_TEXT = ‘Customer is unknown’;
INSERT INTO ORDERS (....)
VALUES (....);
CREATE PROCEDURE SUBMIT_ORDER
(IN ONUM INTEGER, IN CNUM INTEGER, IN PNUM INTEGER,
IN QNUM INTEGER)
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
DECLARE EXIT HANDLER FOR SQLSTATE VALUE '23503'
SIGNAL SQLSTATE '75002'
SET MESSAGE_TEXT = 'Customer number is not known';
INSERT INTO ORDERS (ORDERNO, CUSTNO, PARTNO, QUANTITY)
VALUES (ONUM, CNUM, PNUM, QNUM);
END
Jan 2005
21
Neue AP Funktionen
3.2 SQL/PL Funktionen für STP‘s – SIGNAL/RESIGNAL
CREATE PROCEDURE divide
( IN numerator INTEGER,
IN denominator INTEGER,
OUT divide_result INTEGER)
LANGUAGE SQL CONTAINS SQL
BEGIN
DECLARE overflow CONDITION FOR SQLSTATE '22003';
DECLARE EXIT HANDLER FOR overflow
RESIGNAL SQLSTATE '22375';
IF denominator = 0 THEN
SIGNAL overflow;
ELSE
SET divide_result = numerator / denominator;
END IF;
END
• Benutzt, um innerhalb eines Handlers eine „exception“ erneut anzuzeigen
• Erzeugt einen „error/warning“ mit einem vorgegebenen SQLSTATE und
einem optionalen Meldungstext
• SQLSTATE kann einen eigenen Wert enthalten (Klasse '01' oder '02‚)
• Ein optionaler MESSAGE_TEXT ist erlaubt
Jan 2005
22
Neue AP Funktionen
3.2 SQL/PL Funktionen für STP‘s – SIGNAL/RESIGNAL
ITERATE Statement nun auch in DB2 for z/OS (V8) möglich
• Already supported in DB2 for iSeries and DB2 for LUW
Das ITERATE Statement veranlasst das Programm an den Beginn eines
„labeled loop“ zurückzukehren
Das label muss ein FOR, LOOP, REPEAT oder WHILE Statement markieren
ITERATE ist ab jetzt ein „reserved word“ in SQL Statements
Beispiel:
ins_loop:
LOOP
FETCH hv_dept...
IF hv_dept ^='D11' THEN
ITERATE ins_loop;
ELSEIF ...
Jan 2005
23
Neue AP Funktionen
3.3 Stored Procedures und UDF Verbesserungen
Angabe der maximalen Anzahl von Fehlern für eine STP
• Granulare Kontrolle über STP‘s und UDF‘s Fehlermanagement
• User kann für jede „stored procedure“ oder „user-defined function“ festlegen,
wie oft eine Routine Fehler haben kann, bevor sie gestoppt wird
• Festgelegt auf „routine level“, anstatt auf „subsystem level“ (MAX ABEND COUNT DSNZPARM STORMXAB)
• Spezifiziert beim CREATE/ALTER FUNCTION/PROCEDURs (STOP AFTER
SYSTEM DEFAULT FAILURES, STOP AFTER n FAILURES, CONTINUE AFTER
FAILURE
Nicht für originäre und „SQL scalar UDFs“
Besseres WLM Ressource Management für „stored routines“
• Besseres „resource management“ durch Ausnutzen der Möglichkeiten des z/OS
„workload managers“
• WLM entscheidet selbst über die Ressourcennnutzung und empfiehlt Änderungen in
der „task“-Anzahl für den SPAS
- TCBs werden aufgrund dieser WLM-Empfehlungen hinzugefügt/entfernt
- Attach eines neuen TCB ist billiger als einen neuen „address space“ zu starten
- MAXTCB definiert hierzu das Maximum
• Empfehlung: Angabe einer hohen Zahl in MAXTCB und WLM erledigt den Rest
Jan 2005
24
3. Neue AP Funktionen
3.3 Stored Procedures – Verbesserungen(Was bleibt)
•
•
„scrollable cursor“ in STP‘s sind immer READ-ONLY
Können aber dennoch STATIC SENSITIVE definiert werden
.
main()
{
EXEC SQL BEGIN DECLARE SECTION;
char hv_account[30];
char hv_acctname[30];
EXEC SQL END DECLARE SECTION;
.
EXEC SQL BEGIN DECLARE SECTION;
static volatile SQL TYPE IS
RESULT_SET_LOCATOR *CRTPROCS_rs_loc;
EXEC SQL END DECLARE SECTION;
.
EXEC SQL CALL SET_CURSOR_ACCOUNT_C1('P');
if (sqlca.sqlcode != 0) prt_sqlc();
.
.
.
EXEC SQL ASSOCIATE LOCATOR( :CRTPROCS_rs_loc )
WITH PROCEDURE PAOLOR2.CRTPROCS;
.
EXEC SQL ALLOCATE C1 CURSOR FOR
RESULT SET :CRTPROCS_rs_loc;
.
EXEC SQL FETCH C1 INTO
:hv_account,
:hv_account_name;
.
EXEC SQL CLOSE C1;
Jan 2005
#pragma linkage(cfunc, fetchable)
#include <stdlib.h>
void cfunc(char parm1[2])
{
EXEC SQL BEGIN DECLARE SECTION;
char hv_type[2];
EXEC SQL END DECLARE SECTION;
strcpy(parm1, hv_type);
EXEC SQL
DECLARE C1 INSENSITIVE SCROLL CURSOR
WITH HOLD WITH RETURN FOR
SELECT ACCOUNT, ACCOUNT_NAME
FROM ACCOUNT
WHERE TYPE = :hv_type
FOR UPDATE OF ACCOUNT_NAME;
EXEC SQL
OPEN C1;
}
Stored procedure
25
3. Neue AP Funktionen
3.3 Stored Procedures und UDF Verbesserungen
LANGUAGE COMPJAVA stored procedures
•
•
•
•
COMPJAVA nutzt HPJ (High Performance Java compiler)
VA Java unterstützt keine „compiled Java link library files“ mehr
No longer supported in V8
Stattdessen Nutzung der LANGUAGE JAVA
- Mit besserer Performance
Unterdrücken von DB2-gesteuerten „stored procedures“
• Kein CREATE von neuen „DB2-established stored procedures“ in V8
- Nach Entfernen der 'NO WLM ENVIRONMENT' Option SQLCODE -199
• Bestehende „DB2-established stored procs“ laufen weiter
• Nach ALTER PROC auf „WLM-managed“ kein ALTER zurück mehr
• Empfehlung: Migration aller „stored procs“ auf „WLM managed“
Jan 2005
26
3. Neue AP Funktionen
3.4 Neue Spezialregister
Client information die jeweilige connection
•
•
•
•
•
über sqleseti, Java, RRS SIGNON
CURRENT CLIENT_ACCTNG
CURRENT CLIENT_APPLNAME
CURRENT CLIENT_USERID
CURRENT CLIENT_WRKSTNNAME
-- „accounting string“
-- „application name“
-- „client user ID“
-- „workstation name“
Spezialregister für MQT‘s
• CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION
• CURRENT REFRESH AGE
Spezialregister für Applikationen
• CURRENT PACKAGE PATH
• CURRENT SCHEMA
Jan 2005
27
3. Neue AP Funktionen
3.4.1 SET CURRENT PACKAGESET
Problem: CURRENT SQLID als impliziter Qualifier für „dynamic SQL“
• CURRENT SQLID betrifft u.a. die „authorization“:
- CURRENT SQLID muß für „dynamic“ CREATE, ALTER, GRANT REVOKE authorisiert
werden
- CURRENT SQLID muß eine „primary / secondary auth ID“ sein (außer bei SYSADM /
SYSCTRL)
• Static SQL nutzt deshalb die BIND Option „QUALIFIER“
• gilt für „unqualified SQL“
Lösung: SET SCHEMA / CURRENT SCHEMA Spezialregister für „dyn SQL“
• CURRENT SCHEMA ist ein Spezialregister mit VARCHAR(128) und demselben
Wert wie CURRENT SQLID zum Zeitpunkt der Initialisierung
• Verlangt SET SCHEMA zum Ändern
• Kann jeden beliebigen Wert annnehmen (nicht begrenzt auf „primary
/secondary auth ID“ wie CURRENT SQLID)
Jan 2005
28
3. Neue AP Funktionen
3.4.2 SET CURRENT PACKAGEPATH
Wozu ? .....
• Zur Auflösung von „packages“ (collection)
• Bedeutet für Applikationen, dass sie eine „collection list“ für den DB-Server
spezifizieren können, nach der eine Suchreihenfolge vorgegeben ist (ähnlich zu
PKLIST im BIND PLAN)
• DB Server können die Liste durchsuchen und das erste „package“, das den
gesuchten Namen aufweist benutzen
• Kontrolle für Anwendungsprogramme, die nicht unter einem DB2 Plan laufen
Vorteile .....
• Vermindern des „network traffic“ und Verbesserung der „CPU/elapsed
time“ für AP
• Ermöglicht die Implementierung von „nested procedures“,
„user-defined functions“ ohne Rücksicht auf das rufende
„runtime environment“ und erlaubt die Spezifikation mehrerer
„collections“
• Einfacherer „switch“ zwischen JDBC und SQLJ
Jan 2005
29
3. Neue AP Funktionen
3.4.2 SET CURRENT PACKAGEPATH
• USER, CURRENT PACKAGE PATH, und CURRENT PATH können nur
EINMAL angegeben werden
• Man beachte, dass man den bestehenden CURRENT PACKAGE PATH
angeben kann und zusätzliche „collections“ vorn / hinten anfügen kann
SET :oldCPP = CURRENT PACKAGE PATH;
SET CURRENT PACKAGE PATH = CURRENT PACKAGE PATH, prodcoll ;
CALL PRODSP (:hv1, :hv2);
SET CURRENT PACKAGE PATH = :oldCPP
Jan 2005
;
30
3. Neue AP Funktionen
3.4.2 SET CURRENT PACKAGEPATH - Beispiele
Jan 2005
31
Neue AP Funktionen
3.5 Neue ODBC Funktionen
Gemeint ist ODBC für Programme unter UNIX System
Services on z/OS (USS)
• Userid und Passwort Authentikation („validation“, nicht nur „syntax
checking“) beim SQLConnect und SQLDriverConnect
• ODBC Unterstützung für lange Namen (auch in den INI-Files)
• ODBC Unterstützung für SQL Statements bis zu 2 MB
• SQLCancel() Support
• ODBC Unicode Support
- Update, insert, delete und fetch von Unicode Daten durch
ODBC Applikationsvariable
- Unicode Strings innerhalb des „ODBC application programming
interface“ (ermöglicht Unicode SQL Statements in der ODBCApplikation)
Jan 2005
32
Neue AP Funktionen
3.6 RRSAF Funktionen
Ermöglicht RRSAF Applikationen „implicit connections“
auf DB2 for z/OS zu erkennen und zu nutzen
• Ähnlich dem „implicit connection support“ in CAF
Heute gibt es ausschließlich „explicit RRSAF connections“
• Man muß IDENTIFY, CREATE THREAD, SIGNON absetzen, um
eine „database connection“ aufbauen zu können
• Ebenso: TERMINATE THREAD - TERMINATE IDENTIFY um sie zu
beenden
V8 implicit RRSAF connection
• eine SQL Statement und IFI Calls reichen aus
• RRSAF baut die „connection“ auf
- Der verwendete Subsystem Name hängt ab von der SSID in DSNHDECP
- Der Planname hängt ab vom DBRM, das den ersten SQL Call absetzt
- Die „Authorization ID“ ist die des „address space“ oder ACEE (falls
vorhanden)
Jan 2005
33
Neue AP Funktionen
3.7 Neue XML Funktionen
Jan 2005
34
Neue AP Funktionen
3.7 Neue XML Funktionen
Sieben neue „built-in functions“ für XML „publishing“ gibt es in DB2 V8:
Cast Funktion:
– XML2CLOB
Scalare Functionen:
– XMLELEMENT
– XMLATTRIBUTES
– XMLFOREST
– XMLCONCAT
– XMLNAMESPACES
Aggregate Funktion:
– XMLAGG
Jan 2005
35
Neue AP Funktionen
3.7 Neue XML Funktionen - Complex XML query example
SELECT VARCHAR( XML2CLOB(
FROM
Jan 2005
XMLElement(NAME "TABLE",
XMLATTRIBUTES('1' as "border"),
XMLElement(NAME CAPTION, 'Department-Employee Table'),
XMLElement(NAME TR, XMLFOREST('Dept No' as TH, 'Dept Name' as TH,
'Emp No' as TH, 'Emp Name' as TH, 'Phone' as TH) ),
XMLAGG(
XMLCONCAT(
XMLELEMENT(NAME TR, XMLELEMENT(NAME TD,
XMLATTRIBUTES( X.CNT+1 as "rowspan"),
D.DEPTNO),
XMLELEMENT(NAME TD,
XMLATTRIBUTES( X.CNT+1 as "rowspan"),
D.DEPTNAME)
),
( SELECT XMLAGG(XMLElement(NAME TR,
XMLForest(EMPNO as TD,
FIRSTNME || ' ' || LASTNAME as TD,
PHONENO as TD) ) )
FROM
DSN8810.EMP E
WHERE
E.WORKDEPT = D.DEPTNO )
)))))
DSN8810.DEPT D, (SELECT WORKDEPT, COUNT(*)
FROM DSN8810.EMP GROUP BY WORKDEPT) X(DEPTNO, CNT)
WHERE D.DEPTNO = X.DEPTNO AND
D.DEPTNO IN ('A00', 'C01')
36
Neue AP Funktionen
3.7 Neue XML Funktionen - XMLELEMENT
SELECT
E.EMPNO,XML2CLOB(
XMLELEMENT
( NAME "EMP", E.FIRSTNME||' '||E.LASTNAME
) ) AS "RESULT"
FROM
DSN8810.EMP E;
---------+---------+---------+---------+---------+--------EMPNO
RESULT
---------+---------+---------+---------+---------+--------000010
<EMP>CHRISTINE HAAS</EMP>
000020
<EMP>MICHAEL THOMPSON</EMP>
000030
<EMP>SALLY KWAN</EMP>
000050
<EMP>JOHN GEYER</EMP>
Jan 2005
37
Neue AP Funktionen
3.7 Neue XML Funktionen - XMLATTRIBUTES
SELECT
E.EMPNO,XML2CLOB(
XMLELEMENT ( NAME "EMP",
XMLATTRIBUTES(
E.EMPNO, E.FIRSTNME||' '||
E.LASTNAME AS "NAME")
) ) AS "RESULT"
FROM
DSN8810.EMP E;
---------+---------+---------+---------+---------+---------+---------+--------------------------EMPNO RESULT
---------+---------+---------+---------+---------+---------+---------+---------------------------000010
<EMP EMPNO="000010" NAME="CHRISTINE HAAS"></EMP>
000020
<EMP EMPNO="000020" NAME="MICHAEL THOMPSON"></EMP>
000030
<EMP EMPNO="000030" NAME="SALLY KWAN"></EMP>
Jan 2005
38
Neue AP Funktionen
3.8 Development Center
Funktionalität
• Weiterentwicklung des „Stored Procedure Builder“
• Unterstützung einer bestimmten Menge von Servern der DB2 Familie
• Aus der Sicht des „mainframe“ kann man hier „stored procedures“ definieren
• Verbesserter z/OS „support“ mit speziellen SQL IDs („package owner“, „build
owner“, „secondary ID“ und „advanced build options“)
• Unterstützung und Entwicklung von SQL und JAVA „stored procedures“ auf
dem zSeries Rechner
• Unterstützung zum Ansehen von „live database tables, views, triggers,
stored procedures und user-defined functions
• und mehr....
Jan 2005
39
3. Neue AP Funktionen
3.1
„dynamic scrollable Cursors“
3.2
SQL/PL Funktionen
3.3
STP und Procedure Verbesserungen
3.4
Neue Spezialregister
3.4.1 SET Current Schema
3.4.2 SET Current PACKAGEPATH
Jan 2005
3.5
ODBC Verbesserungen
3.6
Implizite RRSAF Verbindungen
3.7
Neue XML Funktionen
40
Herunterladen