sql >> Database teknologi >  >> RDS >> Oracle

Hvad er PLSQL-poster i Oracle

Oracle PLSQL-poster

  • PLSQL-poster er sammensatte datatyper. Det er en gruppe af relaterede dataelementer som felter, hver med sit eget navn og datatype.
  • PL/SQL-poster ligner i strukturen en række i en databasetabel. Hver skalardatatype i posten har en værdi.
  • En post består af komponenter af enhver skalar, PL/SQL-post eller PL/SQL-tabeltype.
  • De kan manipuleres som en enkelt enhed. Optegnelser kan have så mange felter som krævet.

Sådan erklærer du Oracle PLSQL-posterne

( A)Brugerdefineret PLSQL-post

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) Der er ingen foruddefinerede datatyper for Record, som der er for den skalære datatype. Så du skal først oprette og derefter tildele

(2) Hvert felt i posten har et unikt navn og en specifik datatype

(3) %TYPE bruges til at erklære en variabel, der er af samme type som en specificeret tabels kolonne.

(4) vi bruger TYPE . . . RECORD-sætning for at oprette din egen posttype er, når et felt i din post skal være en PL/SQL-specifik type, såsom BOOLEAN. Hvis du bruger %ROWTYPE, vil datatyperne for alle felterne være begrænset til SQL-typer

(5) Records er i sig selv PL/SQL-specifikke datatyper, så en anden god funktion ved brugerdefinerede posttyper er, at du kan definere en posttype som et felt i en anden posttype

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) Vi kan også definere optag som tabelrækketype

DECLARE sales_data_rec apps.sales_data%ROWTYPE;

1) Dette giver os mulighed for at erklære en post baseret på samlingen af ​​kolonnen i tabellen eller visningen

2) Vi bruger %ROWTYPE-præfikset med databasetabellen til at erklære det

3) Felter i posten tager deres navn og datatype fra kolonnen i tabellen

C) Vi kan også bruge %ROWTYPE til at erklære en post, der har samme struktur som en SELECT-sætning i en markør.

Dette er især nyttigt til at hente enten et undersæt af kolonner fra en tabel eller kolonner fra flere tabeller.

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

Når du henter data fra en markør til PL/SQL-variabler, skal du erklære en post baseret på den markør med %ROWTYPE og hente den ind i den post. På denne måde, når og hvis SELECT-listen over markøren ændres, vil antallet og typen af ​​felter i posten ændre sig tilsvarende, og alt forbliver synkroniseret.

Sådan overfører du værdier til Oracle PLSQL-poster

Syntaks Brug
rec_name.col_name :=værdi; At direkte tildele en værdi til en specifik kolonne i en post.
rec_name.column_name :=værdi; For direkte at tildele en værdi til en specifik kolonne i en post, hvis posten er erklæret ved hjælp af %ROWTYPE.
VÆLG kolonne1, kolonne2 INTO rec_name.col_name1, rec_name.col_name2 FRA tabelnavn [WHERE-sætning]; At tildele værdier til hvert felt i en post fra databasetabellen.
SELECT * INTO record_name FROM table_name [WHERE-sætning]; At tildele en værdi til alle felter i posten fra en databasetabel.
variabelnavn :=postnavn.kolonnenavn; At hente en værdi fra en postkolonne og tildele den til en variabel.

Du skal læse disse  andre PLSQL-indlæg

Oracle PLSQL-blokstruktur og -typer
Oracle plsql-interviewspørgsmål
Hurtige Oracle sql- og plsql-vejledninger


  1. Oracle Database Test Challenge - Sammenlign Skema Data

  2. Hvordan CRC32 virker i MariaDB

  3. Postgres adgangskodegodkendelse mislykkes

  4. 5 ubesværede tips til brug af SQL UPDATE-erklæring med JOIN