Oracle PLSQL-poster
- PLSQL-poster är sammansatta datatyper. Det är en grupp relaterade dataobjekt som fält, vart och ett med sitt eget namn och datatyp.
- PL/SQL-poster liknar strukturen på en rad i en databastabell. Varje skalär datatyp i posten har ett värde.
- En post består av komponenter av valfri skalär, PL/SQL-post eller PL/SQL-tabelltyp.
- De kan manipuleras som en enda enhet. Poster kan ha så många fält som krävs.
Hur man deklarerar Oracle PLSQL-poster
( A)Användardefinierad 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) Det finns inga fördefinierade datatyper för Record som det finns för den skalära datatypen. Så du måste skapa först och sedan tilldela
(2) Varje fält i posten har ett unikt namn och en specifik datatyp
(3) %TYPE används för att deklarera en variabel som är av samma typ som en angiven tabells kolumn.
(4) vi använder TYP . . . RECORD-sats för att skapa din egen posttyp är när ett fält i din post måste vara en PL/SQL-specifik typ, såsom BOOLEAN. Om du använder %ROWTYPE kommer datatyperna för alla fält att vara begränsade till SQL-typer
(5) Poster är i sig själva PL/SQL-specifika datatyper, så en annan trevlig egenskap hos användardefinierade posttyper är att du kan definiera en posttyp som ett fält i en annan posttyp
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 också definiera spela in som tabellradstyp
DEKLARE sales_data_rec apps.sales_data%ROWTYPE; |
1) Detta tillåter oss att deklarera en post baserat på samlingen av kolumnen i tabellen eller vyn
2) Vi använder prefixet %ROWTYPE med databastabellen för att deklarera det
3) Fält i posten hämtar deras namn och datatyp från tabellens kolumn
C) Vi kan också använda %ROWTYPE för att deklarera en post som har samma struktur som en SELECT-sats i en markör.
Detta är särskilt användbart för att hämta antingen en delmängd av kolumner från en tabell eller kolumner från flera tabeller.
DECLARE CURSOR emp_cur IS SELECT lastname, age,firstname FROM employees; l_employee emp_cur%ROWTYPE;
Närhelst du hämtar data från en markör till PL/SQL-variabler, bör du deklarera en post baserad på den markören med %ROWTYPE och hämta den till den posten. På detta sätt, när och om SELECT-listan med markören ändras, kommer antalet och typen av fält i posten att ändras i enlighet med detta och allt kommer att förbli synkroniserat.
Hur man skickar värden till Oracle PLSQL-poster
Syntax | Användning |
rec_name.col_name :=värde; | Att tilldela ett värde direkt till en specifik kolumn i en post. |
rec_name.column_name :=värde; | För att direkt tilldela ett värde till en specifik kolumn i en post, om posten deklareras med %ROWTYPE. |
VÄLJ kolumn1, kolumn2 INTO rec_name.col_name1, rec_name.col_name2 FROM table_name [WHERE-sats]; | Att tilldela värden till varje fält i en post från databastabellen. |
VÄLJ * INTO postnamn FRÅN tabellnamn [WHERE-sats]; | Att tilldela ett värde till alla fält i posten från en databastabell. |
variabelnamn :=postnamn.kolnamn; | För att hämta ett värde från en postkolumn och tilldela det till en variabel. |
Du måste läsa dessa andra PLSQL-inlägg
Oracle PLSQL-blockstruktur och -typer
Oracle plsql-intervjufrågor
Snabbtutorials för Oracle sql och plsql