Heim  >  Artikel  >  Datenbank  >  Welche Funktionen haben gespeicherte Oracle-Prozeduren?

Welche Funktionen haben gespeicherte Oracle-Prozeduren?

青灯夜游
青灯夜游Original
2022-02-24 17:58:414399Durchsuche

Die Funktionen von Oracle Stored Procedures sind: 1. Vereinfachen Sie komplexe Vorgänge und reduzieren Sie die Gesamtentwicklungskosten. 2. Erhöhen Sie die Datenunabhängigkeit. 3. Können Sie die Fehlerwahrscheinlichkeit effektiv verringern.

Welche Funktionen haben gespeicherte Oracle-Prozeduren?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Oracle 11g-Version, Dell G3-Computer.

Oracle-gespeicherte Prozeduren werden häufig im eigentlichen Datenbankentwicklungsprozess verwendet. Als wesentliche Fähigkeit für einen Datenbankentwickler spielen sie in SQL-Anweisungen eine unersetzliche Rolle. Die sogenannte gespeicherte Prozedur ist ein Programmmodul, das in der Datenbank gespeichert wird, um eine bestimmte Geschäftsfunktion auszuführen. Es handelt sich um eine Reihe von Codeblöcken, die aus einem oder mehreren PL/SQL-Codeblöcken oder SQL-Anweisungen bestehen.

Die Rolle (Vorteile) gespeicherter Prozeduren:

  • Komplexe Vorgänge vereinfachen und die Gesamtentwicklungskosten senken.

    Gespeicherte Prozeduren kapseln die tatsächlich ausgeführten Geschäftslogik-PL/SQL-Blöcke und mehrere SQL-Anweisungen in gespeicherte Prozeduren. Andere Entwickler müssen nur die geschriebenen Prozeduren aufrufen, um die gewünschten Ergebnisse zu erhalten, ohne das Geschäft neu zu verstehen. Extrahieren Sie das Geschäft und lassen Sie es von Fachkräften schreiben.

  • Erhöhen Sie die Datenunabhängigkeit.

    Seine Funktion ähnelt der einer Ansicht. Wenn sich die Grunddaten der Tabelle ändern, müssen wir dabei nur den Code ändern, ohne das aufrufende Programm zu ändern. Dadurch entfällt für Benutzerprogramme die Notwendigkeit, Code direkt für Basisdaten zu schreiben. Dadurch wird der Code zusammenhängender und weniger gekoppelt.

  • Verbessern Sie die Sicherheit.

    Die Verwendung gespeicherter Prozeduren reduziert effektiv die Fehlerwahrscheinlichkeit. Wenn Sie zum Ausführen einer bestimmten Operation keine gespeicherten Prozeduren verwenden, müssen Sie möglicherweise mehrere separate SQL-Anweisungen ausführen, und zu viele Ausführungsschritte können zu einer höheren Fehlerwahrscheinlichkeit führen.

  • Leistung verbessern.

    Im eigentlichen Entwicklungsprozess erfordert die Entwicklung einer Geschäftsmodulfunktion möglicherweise die Verwendung mehrerer SQL-Anweisungen und mehrerer PL/SQL-Programmblöcke, um das Problem zu lösen. Durch das Schreiben in eine Prozedur muss Oracle sie nur einmal kompilieren und kann später jederzeit aufgerufen werden. Wenn Sie keine Prozeduren verwenden und viele SQL-Anweisungen direkt in das Programm schreiben, sind mehrere Kompilierungen und mehrere Verbindungen zur Datenbank erforderlich, was die Leistung erheblich verringert.

Create Oracle Stored Procedure Syntax:

create [or replace] procedure 过程名
( p1 in|out datatype,
  p2 in|out datatype,
  ...
  pn in|out datatype
    
) is 
    
    ....--声明部分
    begin
    
    ....--过程体
    end;

Grammatikanalyse:

1. Das Schlüsselwort „prozedur“ ist der Befehl zum Erstellen einer gespeicherten Prozedur.

2. Erstellen [oder Ersetzen]: Wenn die gespeicherte Prozedur bereits vorhanden ist, überschreiben und ersetzen Sie die ursprüngliche Prozedur.

3. in|out: Die gespeicherte Prozedur verfügt über zwei Parameteroptionen: Eingabeparameter und Ausgabeparameter. Bei Verwendung des Prozesses müssen die Eingabeparameter über entsprechende Variablen verfügen. Eingabe- und Ausgabeparameter müssen entsprechende Variablen zum Empfangen haben.

4. Datentyp gibt den Datentyp an, der den eingehenden und ausgehenden Parametervariablen entspricht.

5. Darauf folgen die deklarierten Variablen, die im Prozess verwendet werden.

6. Begin...end wird in die Mitte der spezifischen Operationen der gespeicherten Prozedur geschrieben.

Beispiel 1. Erstellen Sie eine gespeicherte Prozedur, um die Rangfolge der Schüler in einem bestimmten Kurs in der Klasse zu berechnen. Der Code lautet wie folgt:

create or replace procedure sp_score_pm(
p_in_stuid in varchar2,--学号
p_in_courseid in  varchar2, --课程ID
p_out_pm out number--排名
)
is
ls_score number:=0;
ls_pm number:=0;
begin
  --获取该学生的成绩
  select t.score into ls_score from score t
   where t.stuid = p_in_stuid
     and t.courseid = p_in_courseid;
  --获取成绩比该学生高的人数
  select count(1) into ls_pm from score t
   where t.courseid = p_in_courseid
   and  t.score>ls_score;
   --得到该学生的成绩排名
   p_out_pm:=ls_pm+1;
exception
  when no_data_found  then
     dbms_output.put_line('该学生的课程:'||p_in_courseid|| '的成绩在成绩表中找不到');
end;

Durch den obigen Code Sie können das SQL-Fenster direkt verwenden, um die Kompilierung auszuführen. Nachdem die Kompilierung erfolgreich war, können wir die gespeicherte Prozedur aufrufen, um die entsprechende Kursbewertung der Schüler zu erhalten. Die gespeicherte Prozedur erfordert die Zuweisung eingehender und ausgehender Parameter, damit wir sie testen können PL/SQL-Anweisungsblock. Der Code lautet wie folgt:

declare
ls_pm number;--排名
begin
  --SC201801001
  sp_score_pm('SC201801001','R20180101',ls_pm);
  dbms_output.put_line('学号:SC201801001,课程号:R20180101 的成绩排名是:'||ls_pm);
  sp_score_pm('SC201801001','R20180102',ls_pm);
  dbms_output.put_line('学号:SC201801001,课程号:R20180102 的成绩排名是:'||ls_pm);
  --SC201801002
  sp_score_pm('SC201801002','R20180101',ls_pm);
  dbms_output.put_line('学号:SC201801002,课程号:R20180101 的成绩排名是:'||ls_pm);
  sp_score_pm('SC201801002','R20180102',ls_pm);
  dbms_output.put_line('学号:SC201801002,课程号:R20180102 的成绩排名是:'||ls_pm);
  
end;

Die Ergebnisse sind wie folgt:

Welche Funktionen haben gespeicherte Oracle-Prozeduren?

Empfohlenes Tutorial: „Oracle Tutorial

Das obige ist der detaillierte Inhalt vonWelche Funktionen haben gespeicherte Oracle-Prozeduren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn