Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Was sind PLSQL-Einträge in Oracle

Oracle PLSQL-Einträge

  • PLSQL-Datensätze sind zusammengesetzte Datentypen. Es handelt sich um eine Gruppe verwandter Datenelemente als Felder, jedes mit seinem eigenen Namen und Datentyp.
  • PL/SQL-Datensätze haben eine ähnliche Struktur wie eine Zeile in einer Datenbanktabelle. Jeder skalare Datentyp im Datensatz enthält einen Wert.
  • Ein Datensatz besteht aus Komponenten eines beliebigen Skalars, PL/SQL-Datensatzes oder PL/SQL-Tabellentyps.
  • Sie können als einzelne Einheit bearbeitet werden. Datensätze können so viele Felder wie nötig haben.

So deklarieren Sie die Oracle PLSQL-Einträge

( A)Benutzerdefinierter PLSQL-Eintrag

DECLARE TYPE employee_record_type IS RECORD 
 (emp_id NUMBER(10) NOT NULL,
 dept_no dept.deptno%TYPE,
 nаme varchar2(20),
 hire_dаte DATE := SYSDATE
 Last_name varchar2(20)
 );
 employee_record employee_record_type;

(1) Es gibt keine vordefinierten Datentypen für Record wie für den skalaren Datentyp. Sie müssen also zuerst erstellen und dann zuweisen

(2) Jedes Feld im Datensatz hat einen eindeutigen Namen und einen bestimmten Datentyp

(3) %TYP wird verwendet, um eine Variable zu deklarieren, die denselben Typ wie die Spalte einer angegebenen Tabelle hat.

(4) Wir verwenden den TYPE . . . RECORD-Anweisung zum Erstellen Ihres eigenen Datensatztyps, wenn ein Feld Ihres Datensatzes ein PL/SQL-spezifischer Typ sein muss, z. B. BOOLEAN. Wenn Sie %ROWTYPE verwenden, werden die Datentypen aller Felder auf SQL-Typen beschränkt

(5) Datensätze sind selbst PL/SQL-spezifische Datentypen, daher ist ein weiteres nettes Feature benutzerdefinierter Datensatztypen, dass Sie einen Datensatztyp als Feld in einem anderen definieren können Datensatztyp

DECLARE 
 TYPE emp_phone IS RECORD
 (
 Stdcode      PLS_INTEGER,
 phn_number   PLS_INTEGER,
 extension    PLS_INTEGER
 );
 TYPE contact_phone IS RECORD
 (
 day_phone#    emp_phone,
 eve_phone#    emp_phone,
 cell_phone#   emp_phone
 );
 sales_rep contact_phone;

B) Wir können auch das definieren Datensatz als Tabellenzeilentyp

DECLARE sales_data_rec apps.sales_data%ROWTYPE;

1) Dadurch können wir einen Datensatz basierend auf der Sammlung der Spalte in der Tabelle oder Ansicht deklarieren

2) Wir verwenden das Präfix %ROWTYPE mit der Datenbanktabelle, um sie zu deklarieren

3) Felder im Datensatz nehmen ihren Namen und Datentyp aus der Spalte der Tabelle

C) Wir können %ROWTYPE auch verwenden, um einen Datensatz zu deklarieren, der die gleiche Struktur wie eine SELECT-Anweisung in einem Cursor hat.

Dies ist besonders hilfreich, um entweder eine Teilmenge von Spalten aus einer Tabelle oder Spalten aus mehreren Tabellen abzurufen.

DECLARE 
 CURSOR emp_cur
 IS
 SELECT lastname, age,firstname FROM employees;
 l_employee   emp_cur%ROWTYPE;

Immer wenn Sie Daten von einem Cursor in PL/SQL-Variablen abrufen, sollten Sie einen auf diesem Cursor basierenden Datensatz mit %ROWTYPE deklarieren und ihn in diesen Datensatz abrufen. Wenn und falls sich die SELECT-Liste des Cursors ändert, ändert sich auf diese Weise die Anzahl und Art der Felder im Datensatz entsprechend und alles bleibt synchron.

So übergeben Sie Werte an Oracle PLSQL-Datensätze

Syntax Nutzung
rec_name.col_name :=value; Um einer bestimmten Spalte eines Datensatzes direkt einen Wert zuzuweisen.
rec_name.column_name :=value; Um einer bestimmten Spalte eines Datensatzes direkt einen Wert zuzuweisen, wenn der Datensatz mit %ROWTYPE deklariert ist.
SELECT Spalte1, Spalte2 INTO rec_name.col_name1, rec_name.col_name2 FROM table_name [WHERE-Klausel]; Um jedem Feld eines Datensatzes aus der Datenbanktabelle Werte zuzuweisen.
SELECT * INTO record_name FROM table_name [WHERE-Klausel]; Um allen Feldern im Datensatz aus einer Datenbanktabelle einen Wert zuzuweisen.
Variablenname :=Datensatzname.Spaltenname; Um einen Wert aus einer Datensatzspalte zu erhalten und ihn einer Variablen zuzuweisen.

Sie müssen diese  anderen PLSQL-Beiträge lesen

Oracle PLSQL-Blockstruktur und -Typen
Oracle plsql-Interviewfragen
Schnelle Oracle sql- und plsql-Tutorials