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