Willkommen im Forum für Fachinformatiker Ausbilder und Azubis.

Sie betrachten unser Forum derzeit als Gast und haben damit nur eingeschränkten Zugriff zu Diskussionen und den weiteren Funktionen. Wenn Sie sich kostenlos registrieren, haben Sie folgende Vorteile:
  • Diese Meldung verschwindet :)
  • Teilnahme am Ausbilderchat
  • Neue Themen verfassen
  • mit anderen Mitgliedern privat kommunizieren
  • an Umfragen teilnehmen
  • weitere spezielle Funktionen genießen
Die Registrierung ist einfach, schnell und vor allem kostenlos, also melden Sie sich an! Falls Sie bei dem Registrierungsprozess oder beim Anmelden Probleme haben, kontaktieren Sie uns.

Zurück   Forum für Fachinformatiker Ausbilder und Azubis > Allgemeines > Tipps und Tricks

Brother Toner von tonermaus.de


Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 12.04.2006, 16:02   #1
metleck
Neuer Benutzer
 
Registriert seit: 21.12.2005
Beiträge: 16
metleck
Standard Forum

Hi!
Hat vielleicht jemand einen Tipp für ein Forum in dem man Fragen zu SQL PL/SQL... stellen kann?
Ich find leider keins im Internet
Danke
metleck ist offline   Mit Zitat antworten
Alt 12.04.2006, 16:12   #2
Angela
Erfahrener Benutzer
Moderator
 
Registriert seit: 04.12.2003
Ort: Regensburg
Beiträge: 2.943
Angela befindet sich auf einem aufstrebenden Ast
Standard

Das kommt auf Deine Fragen an. :wink:
Leider habe ich keine Zeit mit Dir hier ein geführtes SQL - PL/SQL Tutorium zu veranstalten. Ich kann Dir aber gerne die eine oder andere kleine Frage hier beantworten.

Ein Forum, das sich ausschließlich mit diesen themengebieten beschäftigt, kenn ich leider auch nicht.
Angela ist offline   Mit Zitat antworten
Alt 12.04.2006, 16:14   #3
metleck
Neuer Benutzer
 
Registriert seit: 21.12.2005
Beiträge: 16
metleck
Standard

ok.
Ich war mir auch mnicht sicher ob ich hier sowas fragen kann, deshalb such ich halt ein Forum.
Also ich versteh nicht genau den Sinn von Packages. Ich verstehe ungefähr wie man sie erstellt aber weiß nicht warum, wieso, weshalb...?
Wenn du mir das sagen könntest wäre das echt gut!
In dem Zusammenhang vielleicht auch Prozeduren?!Ist wahrschienlich zuviel.
metleck ist offline   Mit Zitat antworten
Alt 13.04.2006, 07:44   #4
Angela
Erfahrener Benutzer
Moderator
 
Registriert seit: 04.12.2003
Ort: Regensburg
Beiträge: 2.943
Angela befindet sich auf einem aufstrebenden Ast
Standard

Da kommt's jetzt drauf an, wie viel Erfahrung Du generell mit Programmierung hast.

PL/SQL ist im Prinzip eine strukturierte Programmiersprache, d.h. es gibt die Möglichkeit einzelne Abläufe in sogenannte Prozeduren auszulagern, die dann immer wieder aufgerufen werden können. Diesen Prozeduren kann ich mittels Parametern Werte übergeben und sie können Werte zurückgeben.

Eine Besonderheit von PL/SQL ist eben diese Handhabung von Übergabe- und Rückgabewerten. In PL/SQL kann ich die Parameter einer Prozedur als
- IN (reine Eingabewerte)
- OUT (reine Rückgabewerte)
- IN OUT (sowohl Ein- als auch Ausgabewert)
kennzeichnen.

Beim Aufruf der Prozedur müssen aber in jedem Fall alle Parameter mit übergeben werden (auch reine OUT Parameter!). Der Unterschied ergibt sich hauptsächlich in der aufrufenden Prozedur. Übergebe ich von dort eine Variable als IN Parameter, bleibt sie in der aufrufenden Prozedur auf jeden Fall unverändert, übergebe ich sie als OUT oder IN OUT Parameter kann sie von der aufgerufenen Prozedur verändert werden.
Erhält eine Prozedur einen reinen IN Parameter, kann der Wert dieses Parameters nicht verändert werden!

Ein Beispiel:
CREATE OR REPLACE PROCEDURE test1
(iPara1 IN INTEGER,
oPara2 OUT INTEGER) IS
BEGIN
oPara2 := iPara1 + 5;
END test1;

CREATE OR REPLACE PROCEDURE test2 () IS
tmpVariable1 INTEGER;
tmpVariable2 INTEGER;
BEGIN
tmpVariable1 := 3;
tmpVariable2 := 0;
test1(tmpVariable1, tmpVariable2); //Prozeduraufruf
END test2;

Aus der Prozedur test2 wird die Prozedur test1 aufgerufen. Dabei werden beide in test1 definierten Parameter mit übergeben.
Der IN Parameter kann dort nicht verändert werden, wohl aber der OUT Parameter.
Beim Start von test1 ist der Wert von iPara1 = 3, der Wert von iPara2 = 0. Anschließend wird die Anweiung ausgeführt. Danach ist iPara1 nach wie vor = 3, iPara2 aber ist = 8. Ein explizites Beenden der Prozedur, z.B. über die Anweisung RETURN, ist nicht nötig. Ist die Prozedur vollständig abgearbeitet, kehrt die Verarbeitung in die aufrufende Prozedur zurück, hier also zu test 2.
In der Prozedur test2 werden die beiden Variablen am Anfang auf Initialwerte gesetzt, tmpVariable1 = 3, tmpVariable2 = 0. Danach folgt der Prozeduraufruf.
Nach dem Prozeduraufruf ist tmpVariable1 nach wie vor = 3, tmpVariable2 hat aber den neuen Wert = 8 von test1 zurückerhalten.


Verständlich?
Angela ist offline   Mit Zitat antworten
Alt 13.04.2006, 08:01   #5
Angela
Erfahrener Benutzer
Moderator
 
Registriert seit: 04.12.2003
Ort: Regensburg
Beiträge: 2.943
Angela befindet sich auf einem aufstrebenden Ast
Standard

Und Packages sind in PL/SQL, ähnlich wie in Java, in erster Linie ein Ordnungsinstrument.

Soll heißen, sie bieten mir die Möglichkeit, mehrere zusammengehörige Elemente in einem Element zusammenzufassen.
Gibt es z.B. eine bestimmte Verarbeitung auf der Datenbank, die aus 10 verschiedenen Prozeduren besteht, die sich gegenseitig aufrufen, verliert man leicht den Überblick, was zusammengehört.
Also fasst man diese 10 Prozeduren in einem Package zusammen, dadurch wird sofort erkennbar - aha, die gehören zusammen zu einem bestimmten Ablauf.

Ein Package in PL/SQL besteht aus einem Head und einem Body.
Im Head des Packages werden alle Elemente definiert, die von außen, also z.B. aus einem anderen Package oder einer anderen Prozedur, aufgerufen werden sollen. Also ähnlich wie ein als public definiertes Element in einer objektorientierten Programmiersprache.
Lediglich definiert bedeutet, es wird nur der Kopf der Prozedur angegeben, aber kein Source.
Im Body werden dann die im Head definierten Prozeduren ausprogrammiert, d.h. mit Source versehen. Dabei muss jede Prozedur, die im Head definiert ist, im Body ausprogrammiert werden (sonst lässt sich das Package nicht kompilieren). Zusätzlich kann ich im Body aber weitere Prozeduren, Variablen etc. programmieren. Diese sind dann von außen nicht aufrufbar. Vergleichbar mit private in einer objektorientierten Programmiersprache.

Beispiel:
//Head
CREATE OR REPLACE PACKAGE test IS
//hier wird nun eine Prozedur definiert
PROCEDURE packageTest1 (oReturn OUT INTEGER);
END test; //Ende des Head

//Body
CREATE OR REPLACE PACKAGE BODY test IS
//Deklaration einer Variablen, diese ist von außen nicht sichtbar,
//gilt aber im gesamten Package test
tmpPackageVariable INTEGER;
//die im Head definierte Prozedur muss ausprogrammiert werden
PROCEDURE packageTest1 (oReturn OUT INTEGER) IS
BEGIN
oReturn := 0;
END packageTest1;
//zusätzlich können noch weitere Prozeduren definiert werden;
//diese sind dann von außen nicht aufrufbar
PROCEDURE internePackageProzedur () IS
BEGIN
tmpPackageVariable := 5;
END internePackageProzedur;
END test; //Ende des Package Bodys
Angela ist offline   Mit Zitat antworten
Alt 13.04.2006, 15:46   #6
metleck
Neuer Benutzer
 
Registriert seit: 21.12.2005
Beiträge: 16
metleck
Standard

Das heißt also in Prozeduren enthalten genau dieselben Teil (deklaratiosnteil...) wie blöcke, man könnte z.b. ein prozedur schreiben , die was berechnet und wenn z.b. der Wert 3 da rauskommt soll die nächste Prozedur "abgespielt" werden´?!
metleck ist offline   Mit Zitat antworten
Alt 13.04.2006, 16:13   #7
Angela
Erfahrener Benutzer
Moderator
 
Registriert seit: 04.12.2003
Ort: Regensburg
Beiträge: 2.943
Angela befindet sich auf einem aufstrebenden Ast
Standard

Nunja, ich weiß nicht genau, was Du unter einem "Block" verstehst (manche bezeichnen jedes PL/SQL Element als Block), ich gehe davon aus dass Du eine quasi "unbenannte" Folge von Anweisungen in PL/SQL meinst (fängt an mit "DECLARE").

Eine Prozedur aber ist ein selbstständiges, benanntes Element in einer Oracle Datenbank, das aus anderen Prozeduren mittels seines Namens aufgerufen werden kann und z.B. eine Berechnung durchführt. Vorteil ist, dass es unter dem Prozedurnamen in der Datenbank gespeichert ist und immer wieder verwendet werden kann.

Sagt Dir der Begriff "strukturierte Programmierung" (auch: modulare oder prozedurale Programmierung) denn was?
Das ist nämlich genau das Prinzip, das dahintersteckt.
Angela ist offline   Mit Zitat antworten
Alt 11.05.2006, 23:46   #8
Dani
Neuer Benutzer
 
Registriert seit: 11.05.2006
Beiträge: 8
Dani
Standard

Hallo metleck

Falls du dann doch weitere Fragen hast, habe ich hier dann noch ein Link für dich:



http://forum.2lucky.de/


Mfg Dani
Dani ist offline   Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SEO URLs im Forum Thomas Webseite 0 22.04.2006 16:51
Aufbau Forum bear Webseite 5 16.02.2006 15:17
Neustrukturierung Forum? Thomas Webseite 42 06.12.2005 13:38
fi-ausbilden-Forum und google Thomas Webseite 4 16.12.2004 08:24


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr.


Segeln lernen Fahrschule MPU positiv Garantie
Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Forum SEO von Zoints
vB Ad Management by =RedTyger=