40
1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc.

1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

Embed Size (px)

Citation preview

Page 1: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

1Jan 2005

Neue Funktionen für AE und Applikationsprogramme

(DB2-V8_AE_APneu)

IBM DB2 V8for z/OS

(*)

(*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc.

Page 2: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

2Jan 2005

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue 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

3.5 ODBC Verbesserungen

3.6 Implizite RRSAF Verbindungen

3.7 Neue XML Funktionen

Page 3: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

3Jan 2005

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue 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 SCROLLCURSOR FORSELECT C1, C2FROM T1;

Page 4: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

4Jan 2005

3.1.1 „Scrollable Cursor“ - Wiederholung

• Implizit über „temporary tables“ (Anwendungs-Scope), d.h. Zugriff auf TEMPDB erforderlich

• Zwei unterschiedliche Typen1. Insensitive

Keine Verbindung zu Basis-Daten2. Static Sensitive

Implizite Synchronisierung über RID undRe-Evaluierung des WHERE ...

• Syntax-Erweiterungen für DECLARE und FETCH

• Neue SQLCODE‘s beim Zugriff auf nicht(mehr) existente „Cursor“-Daten

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 5: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

5Jan 2005

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“

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 6: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

6Jan 2005

3.1.3 Scrollable Cursor - Syntax

DECLARE cname

INSENSITIVE

STATIC SENSITIVE

SCROLL

CURSOR ....

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 7: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

7Jan 2005

3.1.4 Scrollable Cursor – (Cursordefinitionen)

•Updatable cursor•Aware of own updates and

deletes within cursor•sees all committed updates

and deletes•All inserts not recognized

•Read only cursor•Not aware of

updates or deletes in base table

•Updatable cursor

•Aware of own updates or deletes within cursor

•Other changes to base table not visible to cursor

•All inserts not recognized

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 8: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

8Jan 2005

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

RESULTSET

FETCH...

3.1.5 Öffnen eines „Scrollable Cursor“

ACCOUNT-Tabelle

ACCOUNT-Tabelle

DECLARE curs1 SENSITIVE SCROLL CURSORWITH HOLD FORSELECT account, account_name, credit_limit , typeFROM accountWHERE account = :in_account

.....OPEN curs1 ....

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 9: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

9Jan 2005

3.1.6 Scrollable Cursor – FETCH

Ergebnismenge

Aktuelle Position

BEFORE ABSOLUTE 0

AFTER

ABSOLUTE -1

FIRST ABSOLUTE 1

LAST

CURRENT RELATIVE 0PRIOR RELATIVE -1

NEXT RELATIVE +1

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 10: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

10Jan 2005

3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP 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

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 11: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

11Jan 2005

FETCH INSENSITIVE

SENSITIVE

NEXT / PRIOR / FIRST / LAST / CURRENT /BEFORE / AFTER

cursorname

ABSOLUTERELATIVE

integer

host-variable *

*) Typ integer oder DECIMAL (18,0)

3.1.7 Scrollable Cursor – FETCH Syntax (keine Änderung)

FROM

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 12: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

12Jan 2005

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

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 13: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

13Jan 2005

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

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 14: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

14Jan 2005

Absolute Cursorbewegung: FETCH ... ABSOLUTE + 5 FROM curs1; oder

MOVE 5 TO cursor-positionFETCH ... ABSOLUTE :cursor-position FROM curs1

Relative Cursorbewegung: FETCH ... RELATIVE - 5 FROM curs1; oder

MOVE -5 TO cursor-moveFETCH ... RELATIVE :cursor-move FROM curs1

FETCH ... NEXT FROM curs1;

Neue FETCH – „keywords“ NEXT, PRIOR, FIRST, LAST, CURRENT,BEFORE, AFTER, ABSOLUTE, RELATIVE

3.1.9 Scrollable Cursor – FETCH(Beispiele)

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 15: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

15Jan 2005

DECLARE ORDERSCROLL SENSITIVE DYNAMIC SCROLL CURSOR FORSELECT ORDERNUM, CUSTNAME, ORDERAMT, ORDERDATEFROM ORDERSWHERE ORDERAMT > 1 FOR UPDATE OF COMMENTS;

** Open scrollable cursor

OPEN ORDERSCROLL;

** Fetch forward from scrollable cursor

** LOOP-TO-FILL SCREENDO 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;

3.2.5 Dynamic Scrollable Cursor –Beispiele

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 16: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

16Jan 2005

** 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;

** 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;

3.1.9 Dynamic Scrollable Cursor –Beispiele (Cont‘ned)

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 17: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

17Jan 2005

3.1.10 Dynamic Scrollable Cursor – ein Vergleich

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Cursor Typ Result TableEigene Än-derungen sichtbar ?

Fremd-Än-derungen sichtbar ?

Update-Fähigkeit

Non-Scrollable (SQL mit JOIN, Sort usw.)

Non-Scrollable

INSENSITIVE SCROLL

SENSITIVESTATIC SCROLL

SENSITIVEDYNAMIC SCROLL

No No No

No No No

Yes

Yes

Yes

Yes

Yes

Yes Yes

Yes

Yes

Keine INSERT‘s Keine INSERT‘s

Fixed, workfile

no workfile, „base table access“

Fixed, declaredtemp table

Fixed, declaredtemp table

No declaredtemp table, „base table access“

Page 18: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

18Jan 2005

„Scrollable cursor“ sind erlaubt:

SPUFI und QMF

REXX Programme

Java Programme

„client“ Programme mitDB2 Connect

„static“ und „dynamic“OS/390 compiled programs

compiled storedprocedures (inklusive „SQL stored procedures“)

ODBC

„Scrollable cursor“ sind nicht erlaubt für:

3.1.10 Dynamic Scrollable Cursor – ein Vergleich

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 19: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

19Jan 2005

3.2 SQL/PL Funktionen für STP‘s

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

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“

Page 20: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

20Jan 2005

3.2 SQL/PL Funktionen für STP‘s - RETURN

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

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 -2END;

Page 21: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

21Jan 2005

3.2 SQL/PL Funktionen für STP‘s – SIGNAL/RESIGNAL

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

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 SQLMODIFIES SQL DATABEGIN

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

Page 22: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

22Jan 2005

3.2 SQL/PL Funktionen für STP‘s – SIGNAL/RESIGNAL

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

CREATE PROCEDURE divide ( IN numerator INTEGER, IN denominator INTEGER, OUT divide_result INTEGER)

LANGUAGE SQL CONTAINS SQLBEGIN

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

Page 23: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

23Jan 2005

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

3.2 SQL/PL Funktionen für STP‘s – SIGNAL/RESIGNAL

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Beispiel:

ins_loop:LOOP

FETCH hv_dept...IF hv_dept ^='D11' THEN

ITERATE ins_loop;ELSEIF ...

Page 24: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

24Jan 2005

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

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 25: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

25Jan 2005

• „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 ISRESULT_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;

#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 SQLDECLARE C1 INSENSITIVE SCROLL CURSORWITH HOLD WITH RETURN FOR

SELECT ACCOUNT, ACCOUNT_NAMEFROM ACCOUNTWHERE TYPE = :hv_type

FOR UPDATE OF ACCOUNT_NAME;

EXEC SQLOPEN C1;}

Stored procedure

3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen

3.3 Stored Procedures – Verbesserungen(Was bleibt)

Page 26: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

26Jan 2005

3.3 Stored Procedures und UDF Verbesserungen

3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen

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“

Page 27: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

27Jan 2005

3.4 Neue Spezialregister

3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen

Client information die jeweilige connection

• über sqleseti, Java, RRS SIGNON• CURRENT CLIENT_ACCTNG -- „accounting string“• CURRENT CLIENT_APPLNAME -- „application name“• CURRENT CLIENT_USERID -- „client user ID“• CURRENT CLIENT_WRKSTNNAME -- „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

Page 28: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

28Jan 2005

3.4.1 SET CURRENT PACKAGESET

3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen

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)

Page 29: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

29Jan 2005

3.4.2 SET CURRENT PACKAGEPATH

3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen

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

Page 30: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

30Jan 2005

3.4.2 SET CURRENT PACKAGEPATH

3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen

• 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;

Page 31: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

31Jan 2005

3.4.2 SET CURRENT PACKAGEPATH - Beispiele

3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen

Page 32: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

32Jan 2005

3.5 Neue ODBC Funktionen

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP 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 ODBC-Applikation)

Page 33: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

33Jan 2005

3.6 RRSAF Funktionen

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP 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)

Page 34: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

34Jan 2005

3.7 Neue XML Funktionen

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 35: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

35Jan 2005

Cast Funktion:

– XML2CLOB

Scalare Functionen:

– XMLELEMENT

– XMLATTRIBUTES

– XMLFOREST

– XMLCONCAT

– XMLNAMESPACES

Aggregate Funktion:

– XMLAGG

3.7 Neue XML Funktionen

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Sieben neue „built-in functions“ für XML „publishing“ gibt es in DB2 V8:

Page 36: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

36Jan 2005

3.7 Neue XML Funktionen - Complex XML query example

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

SELECT VARCHAR( XML2CLOB( 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 EWHERE E.WORKDEPT = D.DEPTNO )) ) ) ) )

FROM 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')

Page 37: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

37Jan 2005

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>

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>

3.7 Neue XML Funktionen - XMLELEMENT

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

Page 38: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

38Jan 2005

3.7 Neue XML Funktionen - XMLATTRIBUTES

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

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>

Page 39: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

39Jan 2005

3.8 Development Center

Neue AP FunktionenNeue AP FunktionenNeue AP FunktionenNeue AP Funktionen

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....

Page 40: 1 Jan 2005 Neue Funktionen für AE und Applikationsprogramme (DB2-V8_AE_APneu) IBM DB2 V8 for z/OS (*) (*) ist eingetragenes Warenzeichen der IBM International

40Jan 2005

3. Neue AP Funktionen3. Neue AP Funktionen3. Neue AP Funktionen3. 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

3.5 ODBC Verbesserungen

3.6 Implizite RRSAF Verbindungen

3.7 Neue XML Funktionen