Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

Ähnliche Dokumente
Arbeit mit zusammengesetzten Datentypen

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Steuerungsstrukturen. Ablaufsteuerung der PL/SQL Ausführung. IF Anweisungen. Einfaches IF

Prozedurale Datenbank- Anwendungsprogrammierung

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

Art der Info: Technische Background Info Teil 3 (April 2002)

Kapitel 4 Dynamisches SQL

Vorbereitungen zum 3. Praktikum (PL/SQL):

PL/SQL - Einführung. Prof. Dr. T. Kudraß 1

Ausnahmebehandlung. Ausnahmebehandlung mit PL/SQL. Ausnahmetypen. Ausnahmebehandlung

Zusammengesetzte Datentypen

Prozedurale SQL-Erweiterungen

Variable. Interaktive Skripte

Kapitel 4 Dynamisches SQL

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Erzeugung und Veränderung von Tabellen

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

PL/SQL. Deklaration von Variablen. Inhalt. PL/SQL Block Struktur. PL/SQL Block Struktur

Prakt. Datenbankprogrammierung. Sommersemester 2005

Oracle 8i und 9i New Features. DOAG November Peter Jensch, Trivadis GmbH

Skripte schreiben. Überblick SQL*Plus. Einloggen in SQL*Plus. Tabellenstrukturen anzeigen

Einführung in PL/SQL

Erzeugen von Constraints

Kontrollstrukturen in PL/SQL

Powerful PL/SQL: Collections indizieren mit VARCHAR2-Indizes

SQL Intensivpraktikum SS 2008

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Verwendung und Einsatzmöglichkeiten des Flashback-Query

Trigger schreiben. Überblick über Trigger. Datenbank Trigger: Beispiel. Aufbau eines Triggers

Views erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View?

Prakt. Datenbankprogrammierung. Sommersemester 2005

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

Aufbau eines Verlaufsdatenmodells unter PL/SQL

Einführung in PL/SQL

Oracle PL/SQL - Grundlagen

Oracle Database 11g: PL/SQL-Grundlagen

PL/pgSQL. VU Datenbanksysteme. Reinhard Pichler

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)

Vorlesung Datenbanksysteme vom PL/SQL (von Oracle) Einführung Deklarationen Cursor Ablaufsteuerung Fehlerbehandlung stored program units

10. Programmieren in SQL

Entspricht dem kartesischen Produkt von zwei oder mehr selektierten Tabellen ohne Join-Bedingung.

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie

Einleitung. ROLLUP, CUBE und GROUPING. Markus Jägle Art der Info Technische Background Info (April 2002)

11 Anwendungsprogrammierung

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

Gespeicherte Prozeduren

Grundlagen der Informatik

PL/pgSQL. VL Datenbanksysteme. Ingo Feinerer

CADSTAR MRP-Link. MRP-Link ist erstellt von:

Eigene Funktionen innerhalb von pgsql

Cursor erlauben eines zeilenweise Verarbeitung einer Tabelle oder eines Anfrageergebnisses in Transact-SQL

Datenbanken 1 und Objektorientierte Datenbanken

Die Datenmanipulationssprache SQL

Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.

Prakt. Datenbankprogrammierung. Sommersemester I,9: Datenmanipulation. Daten-Manipulations-Sprache. Das INSERT-Statement

ORACLE9i: PL/SQL PL/SQL. Inhalt. Einführung. Deklarationsteil. Ausführungsteil. Cursorkonzept. Ausnahmebehandlung

Triggern. Change Data Capture

Übung PL/SQL Trigger Lösungen

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Struktur von PL/SQL. Oracle PL/SQL Die Programmiersprache von Oracle. Ein Beispiel. Bildschirmausgabe. Using Oracle PL/SQL.

Objektorientierte PL/SQL-Programmierung für RDBMS

Order Ansicht Inhalt

Teil VIII. Weitere Datenbanksprachen

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Oracle SQL. Seminarunterlage. Version vom

Datenschutz: Zugriffsrechte in SQL

Oracle PL/SQL Marco Skulschus Marcus Wiederstein

Mengen- oder SET-Operatoren fassen das Ergebnis von zwei oder mehreren Teilabfragen zu einem Ergebnis zusammen.

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Neuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching

Datenbanken: Prozedurales SQL

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Praktische SQL-Befehle 2

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

Prakt. Datenbankprogrammierung. Sommersemester II,4: Kontrollstrukturen. Kontrolle der Ausführungsreihenfolge. IF-Statement

Optimaler Zugriff in jeder Anwendung SQL-Zugriff im Oracle-Server

Entwicklungsumgebung für die Laborübung

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

B Synopsis der Programmiersprachen ABAP, VB und Java

Oracle 10g Einführung

Prozeduren und Trigger in Datenbanken

Gesicherte Prozeduren

Donnerstag, 10. November h00, Musensaal Database. LogMiner im Einsatz. Marco Patzwahl MuniQSoft GmbH, Unterhaching b.

Art der Info: Technische Background Info Teil 1 (April 2002)

Prakt. Datenbankprogrammierung. Sommersemester 2005

Transkript:

Explizite Jedes SQL Statement, das der Oracle Server ausführt, hat einen individuellen, der verbunden ist mit: Implizitem : Declariert für alle DML-Statements und PL/SQL SELECT Statements. Explizitem : Declariert und benannt vom Programmierer Copyright Oracle Corporation, 1998. All rights reserved. 21-2 Copyright Oracle Corporation, 1998. All rights reserved. Explizite Funktionen Ergebnis 7369 SMITH CLERK 7566 JONES MANAGER 7788 SCOTT ANALYST Aktuelles Tupel 7876 ADAMS CLERK 7902 FORD ANALYST 21-3 Copyright Oracle Corporation, 1998. All rights reserved. Deklaration Lege einen benannten an (CREATE) Steuerung des expliziten s OPEN Identifiziere die aktiven Attribute FETCH Lade das aktive Tupel in die Variable LEER? Teste, ob Tupel existieren 21-4 Copyright Oracle Corporation, 1998. All rights reserved. Nein Ja Rückgabe mit FETCH, wenn Tupel gefunden wurden CLOSE Verlasse die aktiven Attribute

Steuerung des expliziten s Öffne den (OPEN) Zeiger Deklaration eines s Rufe ein Tupel mit dem ab (FETCH) Führe fort, bis kein Tupel mehr vorhanden ist Schließe den (CLOSE) Zeiger Zeiger CURSOR cursor_name IS select_statement; Keine INTO-Klausel in der -Deklaration 21-5 Copyright Oracle Corporation, 1998. All rights reserved. 21-6 Copyright Oracle Corporation, 1998. All rights reserved. Deklaration eines s DECLARE CURSOR c2 IS SELECT * FROM dept WHERE deptno = 10; OPEN Öffnen des s cursor_name; Öffne den zur Ausführung der Anfrage und zur Identifizierung des Attribut-Sets. Wenn die Anfrage keine Tupel zurückgibt wird keine Ausnahme angegeben (keine Fehlermeldung). -Attribute testen nach FETCH. 21-7 Copyright Oracle Corporation, 1998. All rights reserved. 21-8 Copyright Oracle Corporation, 1998. All rights reserved.

Daten vom holen FETCH cursor_name INTO [variable1, variable2, ] record_name]; Die aktiven Tupelwerte in die Output- Variablen speichern. Die gleiche Anzahl von Variablen bereitstellen Die Variablen werden von ihrer Position mit den Spalten verbunden. Überprüfen, ob die richtigen Attribute in den Variablen gespeichert sind.. 21-9 Copyright Oracle Corporation, 1998. All rights reserved. e Daten vom holen FETCH c1 INTO v_empno, v_ename; OPEN defined_cursor; LOOP FETCH defined_cursor INTO defined_variables EXIT WHEN ; -- Process the retrieved data 21-10 Copyright Oracle Corporation, 1998. All rights reserved. CLOSE schließen cursor_name; Nach dem kompletten Einlesen wird der geschlossen Vom geschlossenen können keine Daten geholt werden. müsste wiedereröffnet werden Explizite Attribute Man erhält Statusinformationen über einen. Attribut Typ Beschreibung %ISOPEN Boolean TRUE, wenn der offen ist %NOTFOUND Boolean TRUE, wenn keine Tupel zurückgegeben wurden %FOUND Boolean TRUE, wenn Tupel zurückgegeben wurden; Komplement zu %NOTFOUND %ROWCOUNT Number Anzahl der zurückgegebenen Tupel 21-11 Copyright Oracle Corporation, 1998. All rights reserved. 21-12 Copyright Oracle Corporation, 1998. All rights reserved.

Steuerung mehrfaches holen Mehrere Tupel werden mit einem expliziten in einer Schleife geholt. In jedem Schritt wird ein Tupel geholt. Mit dem %NOTFOUND Attribut wird getestet, ob noch Tupel vorhanden waren. : anwenden DECLARE v_empno emp.empno%type; v_ename emp.ename%type; OPEN c1; LOOP FETCH c1 INTO v_empno, v_ename; EXIT WHEN c1%notfound; -- Datenmanipulation oder.. END LOOP; CLOSE c1; 21-13 Copyright Oracle Corporation, 1998. All rights reserved. 21-14 Copyright Oracle Corporation, 1998. All rights reserved. Das %ISOPEN Attribut Tupel können nur geholt werden, wenn der offen ist. Mit dem %ISOPEN attribut kann gefragt werden, ob der offen ist. IF NOT c1%isopen THEN OPEN c1; END IF; LOOP FETCH c1 Das %NOTFOUND und das %ROWCOUNT Attribut Mit dem %ROWCOUNT attribut wird die exakte Anzahl der geholten Tupel ermittelt. Mit dem %NOTFOUND attribut wird ermittelt, wann die Schleife verlassen werden muss. 21-15 Copyright Oracle Corporation, 1998. All rights reserved. 21-16 Copyright Oracle Corporation, 1998. All rights reserved.

und Records Die Werte der bearbeiteten Tupel im aktiven Set werden oftmals in einem PL/SQL RECORD gespeichert. Example emp_record c1%rowtype; OPEN c1;... FETCH c1 INTO emp_record; 21-17 Copyright Oracle Corporation, 1998. All rights reserved. FOR Schleifen FOR record_name IN cursor_name LOOP statement1; statement2;... END LOOP; Verkürzen der Bearbeitung. Implizites open, fetch und close wird angewandt. Der RECORD muss nicht deklariert werden - er ist implizit deklariert. 21-18 Copyright Oracle Corporation, 1998. All rights reserved. FOR Schleifen Alle Angestellten werden einzeln durchmustert, bis die Bedingung erfüllt ist. DECLARE FOR emp_record IN c1 LOOP -- implizites Open und implizites Fetch IF emp_record.empno = 7839 THEN END LOOP; -- implizites Close FOR Schleifen mit Unterabfragen Man muss den nicht deklarieren. FOR emp_record IN ( FROM emp) LOOP -- implizites Open und implizites Fetch IF emp_record.empno = 7839 THEN END LOOP; -- implizites Close 21-19 Copyright Oracle Corporation, 1998. All rights reserved. 21-20 Copyright Oracle Corporation, 1998. All rights reserved.

typen: Zusammenfassung Implizite : Für alle DML Statements und single-row queries. Explizite : Für Anfragen auf null, eine oder mehrere Tupel. Veränderungen mit expliziten. Überprüfen des status mit den attributen. Benutze die FOR Schleife. Links http://www.datenbank-plsql.de http://www.db.cs.ucdavis.edu/ teaching/sqltutorial/ http://infolab.stanford.edu/ ~ullman/fcdb/oracle/or-plsql.html http://www.a-wilde.de/hp/studium/db/plsql4.htm http://www.dke.jku.at/teaching/exams/ dke/uebungsstoff/plsql.pdf http://sheikyerbouti.developpez.com/pl_sql/ 21-21 Copyright Oracle Corporation, 1998. All rights reserved. 21-22 Copyright Oracle Corporation, 1998. All rights reserved.