SlideShare ist ein Scribd-Unternehmen logo
Stored Procedures in MySQL


Michele Catalano I 06.10.2011




                                © Mayflower GmbH 2011
CREATE PROCEDURE


I CREATE PROCEDURE
   name ([IN|OUT|INOUT] varname type …)
       Variablen definition

   DEFINER Manuelles definieren des Besitzers der Prozedur (default Ersteller)
   DETERMINISTIC Bei identischen Input gleicher Output.
   CONTAINS SQL | NO SQL | READS SQL DATA |
    MODIFIES SQL DATA
       Definiert der Sprache bzw. ob Daten nur gelesen oder auch manipuliert werden.

   SQL SECURITY (DEFINER | INVOKER )
       Definiert mit welchen Rechten die Prozedur ausgeführt wird.

   BEGIN … END Block mit der eigentlichen Prozedur
I delimiter

                                                                                       Mayflower GmbH I 2
Grundlagen Flow Control



I   IF .. ELSEIF … ELSE … ENDIF
I   CASE … (WHEN … THEN) … ELSE … END CASE
I   label: LOOP … END LOOP
I   [label:] REPEAT … UNTIL … END REPEAT
I   [label:] WHILE … DO … END WHILE [label]
I   LEAVE label
I   INTERATE label




                                              Mayflower GmbH I 3
DECLARE Handler


I DECLARE HANDLER
   TYPE
      CONTINUE Weiter ausführen des Codes im BEGIN...END Block
      EXIT Abbrechen der Ausführung des Codes im BEGIN...END Block
   CONDITION
      SQLSTATE sqlstate_value
            Abfangen eines bestimmten SQLSTATE Wert

        SQLWARNING Abfangen alle SQLSTATS die mit '01' beginnen
        NOT FOUND Abfangen alle SQLSTATS die mit '02' beginnen
        SQLEXCEPTION
            Abfangen alle SQLSTATS die mit '00', '01' und '02' beginnen




                                                                          Mayflower GmbH I 4
DECLARE Variablen


I DECLARE VARIABLE
   var_name, [var_name]... type [DEFAULT value]
I var_name ist alphanumerisch
I type ist ein valider SQL Feld Type (z.B. CHAR, VARCHAR)
I value ist der Standard Wert welche der variable beim deklarieren
  zugewiesen wird.




                                                                Mayflower GmbH I 5
GRUNDLAGEN CURSOR



I DECLARE name CURSOR FOR sqlstatement
  Deklarieren des CURSORS für denn SQL Befehl

I OPEN name
  Öffnen des CURSORS

I FETCH name INTO
  Iterieren über die Ergebnisse des CURSORS
       Um das Ende der Daten zu erkennen muss unbedingt ein HANDLER für
         NOT FOUND definiert werden.

I CLOSE name
  Schließen des CURSORS




                                                                          Mayflower GmbH I 6
RECHTE



I CREATE PROCEDURE
I ALTER PROCEDURE
I DROP PROCEDURE
I CALL
   Ohne diese Recht kann keine Prozedur ausgeführt werden!!
I Wenn die Prozedur mit 'SQL SECURITY INVOKER' erstellt wurde
  muss der Caller auch alle rechte für die in der Prozedur
  verwendeten SQL Statements haben!




                                                              Mayflower GmbH I 7
Vorteile



I Sehr Mächtige Datenmanipulationsmöglichkeit

I Interessante Möglichkeit zusammen mit Trigger

I Gut nutzbar für komplexes Reporting

I Einfaches Hilfswerkzeug für Datenbank redesign

I Abfragen von Daten für die der Caller nicht direkt die Rechte hat.




                                                                  Mayflower GmbH I 8
Nachteile


I Einbindung in ein Continues Integrations Umgebung nicht
  gegeben.
I Testbarkeit eigentlich nicht vorhanden
I Kein Debugging
I Mischung von Daten und Logik
I Schlecht ein schätzbare Last auf Datenbankservern für
  Performance Tunning
I Unsicherheit im zusammenspiele mit Master/Slave bin log
I Ein Caller kann durch die Prozedur auch auf Daten für die er
  keine Zugriffsrechte hat zugreifen.

                                                                 Mayflower GmbH I 9
Quellenverweise


I MySQL Manual:
   http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html

   http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-compound-statements.html

   http://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html

   http://dev.mysql.com/doc/refman/5.1/en/stored-programs-security.html

   http://dev.mysql.com/doc/refman/5.1/en/call.html

   http://dev.mysql.com/doc/refman/5.1/en/stored-routines-privileges.html

   http://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.html




                                                                                Mayflower GmbH I 10
Vielen Dank für Ihre Aufmerksamkeit!




        Referent   Michele Catalano
                   michele.catalano@mayflower.de
                   +49 89 242054 1 12
                                  1


                   Mayflower GmbH
                   Mannhardtstrasse 6
                   80538 München

25.10.2011                              Mayflower GmbH   11

Weitere ähnliche Inhalte

PPTX
Dem bugs new 2012
PPTX
cuadrocomparativo
DOCX
Gmil2
PPTX
Concierto Metallica
DOCX
Cronica rafaelavila.docx
ODP
Sin título 1
DOCX
Situación 3
PPTX
Robot educador 2
Dem bugs new 2012
cuadrocomparativo
Gmil2
Concierto Metallica
Cronica rafaelavila.docx
Sin título 1
Situación 3
Robot educador 2

Andere mochten auch (18)

PDF
Mapa conceptual procesos organizacionales
PPTX
Códigos QR Carla Sanchez
PDF
Presentación2
PDF
Gemeinsam anders handeln
PPT
Artículos de ley
PPTX
Informática 2
PDF
Netzzunft-Treffen: Politik 2.0 Teil 1 - Digitale Nachhaltigkeit
PDF
ADTELLIGENCE - Social Targeting & Permission Marketing - Die Zukunft der Onli...
PPTX
Acompañamiento tutorial del e mediador en ava
PDF
PDF
Sascha Dittmann, Ernst & Young: Big Data in der Cloud
PDF
Goldmedia Trendmonitor 2011. Analysen und Prognosen für 2011 in den Bereichen...
DOCX
Offizielle Regeln für den Dell Vostro Fotowettbewerb „Dell räumt den Schreibt...
DOCX
Colegio nacional nicolás esguerra
PPT
Wikis und Weblogs im Wissensmanagement: Nutzentypen und Erfolgsfaktoren
DOCX
Proyecto final
PDF
mi trabajo
PPTX
8. cyberbullyng
Mapa conceptual procesos organizacionales
Códigos QR Carla Sanchez
Presentación2
Gemeinsam anders handeln
Artículos de ley
Informática 2
Netzzunft-Treffen: Politik 2.0 Teil 1 - Digitale Nachhaltigkeit
ADTELLIGENCE - Social Targeting & Permission Marketing - Die Zukunft der Onli...
Acompañamiento tutorial del e mediador en ava
Sascha Dittmann, Ernst & Young: Big Data in der Cloud
Goldmedia Trendmonitor 2011. Analysen und Prognosen für 2011 in den Bereichen...
Offizielle Regeln für den Dell Vostro Fotowettbewerb „Dell räumt den Schreibt...
Colegio nacional nicolás esguerra
Wikis und Weblogs im Wissensmanagement: Nutzentypen und Erfolgsfaktoren
Proyecto final
mi trabajo
8. cyberbullyng
Anzeige

Ähnlich wie Stored Procedures in MySQL (17)

PDF
Mobile Anwendungen mit SenchaTouch
PDF
Symfony2
PPTX
SQL Developer 4.x - Tipps für "faule" Entwickler
PPTX
MVVM mit WPF
PDF
JS Best Practises Debugging und Logging
PPTX
The Lotus Code Cookbook
KEY
Dev ops für php
PDF
Backbone.js
KEY
Dev ops für php talk
PPTX
Logging und Debugging in Oracle Forms
PDF
jQuery Mobile
PDF
Security Smoke Test - Eine bewußte Entscheidung für die IT Sicherheit
KEY
DevOps für PHP (und andere)
PDF
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12
PDF
Forms 12c und der Oracle SB
PDF
PHP mit Paul Bocuse
PDF
Request Lifecycle im Zend Framework
Mobile Anwendungen mit SenchaTouch
Symfony2
SQL Developer 4.x - Tipps für "faule" Entwickler
MVVM mit WPF
JS Best Practises Debugging und Logging
The Lotus Code Cookbook
Dev ops für php
Backbone.js
Dev ops für php talk
Logging und Debugging in Oracle Forms
jQuery Mobile
Security Smoke Test - Eine bewußte Entscheidung für die IT Sicherheit
DevOps für PHP (und andere)
Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12
Forms 12c und der Oracle SB
PHP mit Paul Bocuse
Request Lifecycle im Zend Framework
Anzeige

Mehr von Mayflower GmbH (20)

PDF
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
PDF
Why and what is go
PDF
Agile Anti-Patterns
PDF
JavaScript Days 2015: Security
PDF
Vom Entwickler zur Führungskraft
PPTX
Produktive teams
PDF
Salt and pepper — native code in the browser Browser using Google native Client
PDF
Plugging holes — javascript memory leak debugging
PDF
Usability im web
PDF
Rewrites überleben
PDF
JavaScript Security
PDF
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
PDF
Responsive Webdesign
PDF
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
PDF
Pair Programming Mythbusters
PDF
Shoeism - Frau im Glück
PDF
Bessere Software schneller liefern
PDF
Von 0 auf 100 in 2 Sprints
PDF
Piwik anpassen und skalieren
PDF
Agilitaet im E-Commerce - E-Commerce Breakfast
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Why and what is go
Agile Anti-Patterns
JavaScript Days 2015: Security
Vom Entwickler zur Führungskraft
Produktive teams
Salt and pepper — native code in the browser Browser using Google native Client
Plugging holes — javascript memory leak debugging
Usability im web
Rewrites überleben
JavaScript Security
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
Responsive Webdesign
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Pair Programming Mythbusters
Shoeism - Frau im Glück
Bessere Software schneller liefern
Von 0 auf 100 in 2 Sprints
Piwik anpassen und skalieren
Agilitaet im E-Commerce - E-Commerce Breakfast

Stored Procedures in MySQL

  • 1. Stored Procedures in MySQL Michele Catalano I 06.10.2011 © Mayflower GmbH 2011
  • 2. CREATE PROCEDURE I CREATE PROCEDURE name ([IN|OUT|INOUT] varname type …) Variablen definition DEFINER Manuelles definieren des Besitzers der Prozedur (default Ersteller) DETERMINISTIC Bei identischen Input gleicher Output. CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA Definiert der Sprache bzw. ob Daten nur gelesen oder auch manipuliert werden. SQL SECURITY (DEFINER | INVOKER ) Definiert mit welchen Rechten die Prozedur ausgeführt wird. BEGIN … END Block mit der eigentlichen Prozedur I delimiter Mayflower GmbH I 2
  • 3. Grundlagen Flow Control I IF .. ELSEIF … ELSE … ENDIF I CASE … (WHEN … THEN) … ELSE … END CASE I label: LOOP … END LOOP I [label:] REPEAT … UNTIL … END REPEAT I [label:] WHILE … DO … END WHILE [label] I LEAVE label I INTERATE label Mayflower GmbH I 3
  • 4. DECLARE Handler I DECLARE HANDLER TYPE CONTINUE Weiter ausführen des Codes im BEGIN...END Block EXIT Abbrechen der Ausführung des Codes im BEGIN...END Block CONDITION SQLSTATE sqlstate_value Abfangen eines bestimmten SQLSTATE Wert SQLWARNING Abfangen alle SQLSTATS die mit '01' beginnen NOT FOUND Abfangen alle SQLSTATS die mit '02' beginnen SQLEXCEPTION Abfangen alle SQLSTATS die mit '00', '01' und '02' beginnen Mayflower GmbH I 4
  • 5. DECLARE Variablen I DECLARE VARIABLE var_name, [var_name]... type [DEFAULT value] I var_name ist alphanumerisch I type ist ein valider SQL Feld Type (z.B. CHAR, VARCHAR) I value ist der Standard Wert welche der variable beim deklarieren zugewiesen wird. Mayflower GmbH I 5
  • 6. GRUNDLAGEN CURSOR I DECLARE name CURSOR FOR sqlstatement Deklarieren des CURSORS für denn SQL Befehl I OPEN name Öffnen des CURSORS I FETCH name INTO Iterieren über die Ergebnisse des CURSORS Um das Ende der Daten zu erkennen muss unbedingt ein HANDLER für NOT FOUND definiert werden. I CLOSE name Schließen des CURSORS Mayflower GmbH I 6
  • 7. RECHTE I CREATE PROCEDURE I ALTER PROCEDURE I DROP PROCEDURE I CALL Ohne diese Recht kann keine Prozedur ausgeführt werden!! I Wenn die Prozedur mit 'SQL SECURITY INVOKER' erstellt wurde muss der Caller auch alle rechte für die in der Prozedur verwendeten SQL Statements haben! Mayflower GmbH I 7
  • 8. Vorteile I Sehr Mächtige Datenmanipulationsmöglichkeit I Interessante Möglichkeit zusammen mit Trigger I Gut nutzbar für komplexes Reporting I Einfaches Hilfswerkzeug für Datenbank redesign I Abfragen von Daten für die der Caller nicht direkt die Rechte hat. Mayflower GmbH I 8
  • 9. Nachteile I Einbindung in ein Continues Integrations Umgebung nicht gegeben. I Testbarkeit eigentlich nicht vorhanden I Kein Debugging I Mischung von Daten und Logik I Schlecht ein schätzbare Last auf Datenbankservern für Performance Tunning I Unsicherheit im zusammenspiele mit Master/Slave bin log I Ein Caller kann durch die Prozedur auch auf Daten für die er keine Zugriffsrechte hat zugreifen. Mayflower GmbH I 9
  • 10. Quellenverweise I MySQL Manual: http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-compound-statements.html http://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html http://dev.mysql.com/doc/refman/5.1/en/stored-programs-security.html http://dev.mysql.com/doc/refman/5.1/en/call.html http://dev.mysql.com/doc/refman/5.1/en/stored-routines-privileges.html http://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.html Mayflower GmbH I 10
  • 11. Vielen Dank für Ihre Aufmerksamkeit! Referent Michele Catalano michele.catalano@mayflower.de +49 89 242054 1 12 1 Mayflower GmbH Mannhardtstrasse 6 80538 München 25.10.2011 Mayflower GmbH 11