Kapitel 4 Dynamisches SQL

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

Prozedurale Datenbank- Anwendungsprogrammierung

Kapitel 7 Datenbank-Tuning

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

Kapitel 3 Datenintegrität

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Kapitel 7 Datenbank-Tuning. Folien zum Datenbankpraktikum Wintersemester 2010/11 LMU München

SQL (Structured Query Language) Schemata Datentypen

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

Oracle: Abstrakte Datentypen:

Datenbanken 1 und Objektorientierte Datenbanken

Vorbereitungen zum 3. Praktikum (PL/SQL):

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Prozedurale SQL-Erweiterungen

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken: Prozedurales SQL

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

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

Kapitel 8 Verteilte Datenbanken

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

11 Anwendungsprogrammierung

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

2. Datenbank-Programmierung

Entwicklungsumgebung für die Laborübung

Objektrelationale, erweiterbare Datenbanken WS 04/05

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java.

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

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Aufgabenstellung. Bekannte Lösungsansätze. Die Idee. Native Informix Architektur

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Carsten Czarski Oracle Deutschland B.V. & Co KG. Keine Angst vor SQL Injection oder Wie man Datenbankzugriffe sicher implementiert

NoSQL mit Postgres 15. Juni 2015

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL

Übungsblatt 8- Lösungsvorschlag

Kapitel 8 Verteilte Datenbanken. Folien zum Datenbankpraktikum Wintersemester 2010/11 LMU München

DB2 SQL, der Systemkatalog & Aktive Datenbanken

IT-Symposium

SQL structured query language

Einführung in PL/SQL

Datenbankprogrammierung 1

Strukturierte Objekttypen

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Sructred Query Language

Automatisierte Datenmigration mit dynamischen SQL

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

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Einstellungen zur Verwendung von Flashback-Abfragen

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

SQL,Teil 1: CREATE, INSERT, UPDATE, DELETE, DROP

Datenbankadministration

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Von der passiven zur aktiven Datenbank II. Trigger Views Prozerdurale SQL-Erweiterungen

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

SQL. Fortgeschrittene Konzepte Auszug

Kuriositäten in der Oracle-Datenbank

Grundkonzepte von SQL

Parallele Programmierung in SQL und PL/SQL. Peter Bekiesch Dierk Lenz DOAG 2011 Konferenz und Ausstellung 17. November 2011

5.8 Bibliotheken für PostgreSQL

Datenbanksysteme. Dominic Pacher. Datenbanken und Informationssysteme (DBIS) Institut für Informatik Universität Innsbruck. dbis-informatik.uibk.ac.

Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems

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

Einbettung in SQL. Zwei Prinzipien: (1) Statische Einbettung

Prüfungsnummer: deutsch. Prüfungsname: Querying. Version: Demo. SQL Server

PL/pgSQL. VU Datenbanksysteme. Reinhard Pichler

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Softwareentwicklung mit JAVA EE

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

Objektrelationale und erweiterbare Datenbanksysteme

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

Labor 3 - Datenbank mit MySQL

Kapitel 5 SQL und Java

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

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

Oracle 10g Einführung

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Dynamische Generierung von XML

Christine Hansen, Fabrizio Fresco, Patrick Malcherek

Benutzerverwaltung, Sichten und Datenintegrität

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

Kontrollstrukturen in PL/SQL

Views in SQL. 2 Anlegen und Verwenden von Views 2

Transkript:

Kapitel 4 Dynamisches SQL Flien zum Datenbankpraktikum Wintersemester 2010/11 LMU München 2008 Thmas Bernecker, Tbias Emrich unter Verwendung der Flien des Datenbankpraktikums aus dem Wintersemester 2007/08 vn Dr. Matthias Schubert Der Einsatz vn dynamischen SQL ist ntwendig, wenn Anweisungen ausgeführt werden sllen, die in PL/SQL nicht als statische Anweisungen ausführbar sind, wie z.b. : DDL-Anweisungen, Kntrllanweisungen (GRANT, etc.) Zur Laufzeit zusammengestellte dynamische Anweisungen Dynamische SQL-Anweisungen sind nicht in Quellcde eingebettet, t sndern werden als Zeichenkette zur Laufzeit generiert der als Parameter einer PL/SQL-Funktin der -Przedur übergeben. Es können Anfragen mit einem der mehreren Ergebnissätzen frmuliert werden Ist eine SQL-Anweisung zur Übersetzungszeit (beim Cmpilieren) der Anwendung nicht vllständig bekannt (mit Ausnahme vn Parametern), dann muss dynamisches SQL verwendet werden. ORACLE bietet zwei Möglichkeiten dynamische SQL-Anweisungen in einem PL/SQL Blck zu implementieren: DBMS_SQL SQL Package Natives dynamisches SQL LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 2

41 4.1 DBMS_SQL SQLPackage Übersicht 4.2 Natives dynamisches SQL 4.3 Gegenüberstellung LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 3 DBMS_SQL SQL Package Beispiel: dynamisches Einfügen in eine Tabelle (Variablenübergabe durch Call by Value) CREATE OR REPLACE PROCEDURE einfuegen ( tab_name VARCHAR2, telnr INTEGER, name VARCHAR2) IS cursr_hdl INTEGER; sql_anweisung VARCHAR(100); rws_prcessed INTEGER; sql_anweisung := INSERT INTO tab_name VALUES (:var1, :var2) ; cursr_hdl := DBMS_SQL.pen_cursr; DBMS_SQL.parse(cursr_hdl, sql_anweisung, DBMS_SQL.native); DBMS_SQL.bind_variable(cursr_hdl, :var1, telnr); DBMS_SQL.bind_variable(cursr_hdl, :var2, name); rws_prcessed := DBMS_SQL.execute(cursr_hdl); DBMS_SQL.clse_cursr(cursr_hdl); SQL.clse cursr(cursr END; LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 4

41 4.1 DBMS_SQL SQLPackage Übersicht 4.2 Natives dynamisches SQL 4.3 Gegenüberstellung LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 5 Anfragen mit einem Ergebnissatz: EXECUTE IMMEDIATE <Anweisung> [INTO <ErgebnisVariable>,... <ErgebnisVariable>] [USING <ParameterVariable>,... <ParameterVariable>]; Beispiel: DECLARE Name VARCHAR(20); Nr INTEGER := 9332; sql_anweisung VARCHAR(100); sql_anweisung := SELECT Name FROM Mitarbeiter WHERE TelNr = :1 ; EXECUTE IMMEDIATE sql_anweisung INTO Name USING Nr; sql_anweisung := INSERT INTO Mitarbeiter VALUES (:1, :2) ; EXECUTE IMMEDIATE sql_anweisung USING Name, Nr; END; LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 6

Anfragen mit mehreren Ergebnissätzen: OPEN <Cursrvariable> FOR <SELECT-Anweisung> [USING <ParameterVariable>,... <ParameterVariable>]; LOOP FETCH <Cursrvariable> INTO <ErgebnisVariable>,... EXIT WHEN <Cursrvariable>%NOTFOUND; END LOOP; CLOSE <Cursrvariable>; <ErgebnisVariable>; i bl Die SELECT-Anweisung wird zur Laufzeit zusammengestellt. Eventuelle Parameter werden mit USING gebunden. Die Bearbeitung erflgt wie bei einem nrmalen Cursr in einer LOOP- Schleife, die über FETCH die einzelnen Ergebnissätze In Variablen ablegt. LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 7 Beispiel: DDL mit dynamischem SQL CREATE OR REPLACE PROCEDURE tab_erstellen (tab_name VARCHAR2) IS -- Erstellen einer Tabelle. Name der Tabelle im Parameter tab_name EXECUTE IMMEDIATE 'CREATE TABLE ' tab_ name ' ( t_id NUMBER(4) NOT NULL, name VARCHAR(15), beruf VARCHAR(10), einkmmen NUMBER(6,2), telnr NUMBER(10) )'; END; CREATE OR REPLACE PROCEDURE tab_leschen (tab_name VARCHAR2) IS EXECUTE IMMEDIATE DROP TABLE tab_name; END; LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 8

41 4.1 DBMS_SQL SQLPackage Übersicht 4.2 Natives dynamisches SQL 4.3 Gegenüberstellung LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 9 Vergleich: DBMS_SQL SQL Natives dynamisches SQL LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 10

Beispiel: Dynamische Ausführung eines PL/SQL-Blcks LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 11 Vergleich: Dynamisches SQL Statisches SQL Statisches SQL umfasst SQL-Anweisungen, die man zur Übersetzungszeit e exakt kennt (d.h. die als Zeichenketten vrgegeben sind) Sie enthalten insbesndere keine Variablen für Tabellen- der Spaltennamen Slche Anweisungen können schn zur Übersetzungszeit vrbereitet werden Man kennt auch die Anzahl und Typen der Ergebnisspalten der SQL- Anweisung, die bei jedem Prgrammablauf in exakt gleicher Weise ausgeführt wird. Statisches SQL ist effizient, da die Anweisungen vr ihrer Ausführung einmal vrbereitet werden und dann (mehrere Male) ausgeführt werden können. Die Anwendung, die statisches SQL verwendet, ist allerdings nach der Übersetzung an eine e spezielle e e Datenbank gebunden. LMU München Flien zum Datenbankpraktikum Wintersemester 2010/11 12