pl sql cursor strings
În acest tutorial, vom învăța ce este un cursor PL SQL și concepte conexe, cum ar fi cursori implicați și expliciți, cursor pentru buclă etc. Vom afla, de asemenea, despre funcțiile șirului în PL / SQL:
În PL SQL Colecții tutorial de Seria PL / SQL , am aflat despre metodele de colectare, Varray, tabelul imbricat și matricea asociativă cu ajutorul exemplelor de cod.
În acest articol, vom explora diferitele tipuri de cursoare pe care le are PL / SQL. De asemenea, vom vedea implementarea diferitelor tipuri de cursoare cu exemple de cod.
De asemenea, vom discuta șirurile și unele dintre funcțiile de șir încorporate disponibile în PL / SQL.
adăugând o valoare unui tablou
Ce veți învăța:
Cursor PL SQL
Oracle are locații de memorie dedicate pentru executarea instrucțiunilor SQL și apoi deține informațiile procesate, de exemplu , numărul total de rânduri actualizate.
Un cursor din PL / SQL dă un nume și acționează ca un indicator către zona de lucru numită zonă contextuală și apoi folosește informațiile sale. Păstrează numărul de rânduri procesate de instrucțiunea SQL. Aceste rânduri sunt numite ca un set activ. Dimensiunea setului activ este egală cu numărul rândurilor care îndeplinesc condiția.
Există două tipuri de cursoare care sunt enumerate mai jos:
- Cursor implicit
- Cursor explicit
Cursori implicați
Cursorile implicite sunt alocate de Oracle în mod implicit în timpul executării instrucțiunilor SQL. Păstrează rândurile afectate de operațiile DML precum UPDATE, DELETE și INSERT. Astfel, se folosesc cursoare implicite atunci când nu avem un cursor explicit.
În timp ce introducem un rând, cursorul păstrează datele respective. În mod similar, pentru operațiile de ștergere și actualizare, rândurile afectate sunt stocate de cursore. Cursorilor implicite nu li se oferă nume și, prin urmare, nu pot fi manipulate de dezvoltatori, iar datele conținute pe acesta nu pot fi utilizate nicăieri.
Cele mai recente cursoare actualizate pot fi utilizate cu ajutorul atributelor cursorului. Aceste atribute sunt proprietățile care ajută la referirea la tipul de date și la structura articolelor fără a repeta definițiile acestora. Toate coloanele și tabelele dintr-o bază de date au un atribut comun (reprezentat prin% semn) caracteristici și pot fi utilizate ca sql% attribute_name.
Sl Nr. | Nume | Scopuri |
---|---|---|
7 | LUNGIME (m) | Returnează numărul numărului de caractere din șirul m. |
unu | %GĂSITE | Oferă rezultatul în boolean. Returnează adevărat dacă instrucțiunile DELETE, INSERT, UPDATE sau SELECT afectează rânduri simple sau multiple. Sau altfel se returnează false. |
Două | %NU A FOST GASIT | Oferă rezultatul în boolean și are funcționalitate inversă de% FOUND. Returnează adevărat dacă instrucțiunile DELETE, INSERT, UPDATE sau SELECT nu afectează niciun rând. Sau altfel se returnează false. |
3 | %ESTE DESCHIS | Oferă rezultatul în boolean. Returnează adevărat dacă cursorul este deschis în prezent. Sau altfel se returnează false. |
4 | % ROWCOUNT | Oferă numărul numărului de rânduri preluate din instrucțiunile DELETE, INSERT, UPDATE sau SELECT. |
5 | %TIP | Oferă tipul de date al coloanei sau variabilei bazei de date. |
6 | % ROWTYPE | Oferă tipul de înregistrare care este echivalent cu un rând de bază de date. |
Să luăm în considerare un tabel numit TUTOR.
SELECT * FROM TUTOR;
Am creat un tabel cu instrucțiunea SQL dată mai jos:
CREATE TABLE TUTOR( CODE INT NOT NULL, SUBJECT VARCHAR(15) NOT NULL, TEACHER VARCHAR(15), REVIEWS VARCHAR (10) NOT NULL, PRIMARY KEY (CODE) );
S-au inserat valori în acest tabel cu instrucțiunile SQL date mai jos:
INSERT INTO TUTOR (CODE,SUBJECT,TEACHER,REVIEWS) VALUES (1, 'Automation', 'Mukul', 'five stars'); INSERT INTO TUTOR (CODE,SUBJECT,TEACHER,REVIEWS) VALUES (4, 'PLSQL', 'Anand', 'four stars'); INSERT INTO TUTOR (CODE,SUBJECT,TEACHER,REVIEWS) VALUES (2, 'Performance', 'Arvind', 'four stars');
Implementarea codului cu cursorul implicit:
DECLARE total_count number(30); BEGIN --updating a row UPDATE TUTOR SET TEACHER = 'Zen' where CODE = 1; -- result in boolean, true returned if no rows affected IF sql%notfound THEN dbms_output.put_line('no subjects fetched'); -- result in boolean, true returned if any rows affected ELSIF sql%found THEN -- count the number of rows affected rows affected total_count := sql%rowcount; dbms_output.put_line( total_count || ' teacher name updated '); END IF; END; /
Ieșirea codului de mai sus ar trebui să fie:
Să verificăm acum modificările reflectate în tabelul numit TUTOR.
Folosim o instrucțiune SQL pentru a obține coloanele tabelului:
SELECT * FROM TUTOR;
Astfel vedem că, așa cum este indicat de cursor, numele profesorului cu codul = 1, este actualizat la Zen.
Cursori expliciți
Dezvoltatorii pot avea propria zonă de context definită de utilizator pentru a rula operațiuni DML. Astfel, ei pot exercita mai multă putere asupra ei. Secțiunea de declarație a blocului de cod PL / SQL conține cursoare explicite. În mod normal, este construit pe operațiuni SELECT care preluează mai multe rânduri.
Sintaxa cursorului explicit:
DECLARE CURSOR <> IS <> <> BEGIN OPEN <>; FETCH <> INTO ; . . CLOSE ; END;
Cursorul explicit funcționează pe procesele enumerate mai jos:
# 1) Declarația cursorului pentru inițializarea memoriei. Aici se creează o zonă de context denumită care servește drept nume de cursor.
Sintaxă:
CURSOR tutorial_s IS SELECT code FROM TUTORIAL;
#Două) Deschiderea cursorului pentru alocarea memoriei . Un cursor este acum disponibil pentru preluarea rândurilor actualizate din baza de date.
Sintaxă:
OPEN tutorial_s;
# 3) Cursorul este preluat pentru obținerea datelor. După efectuarea operației SELECT, rândurile obținute sunt puse în memoria alocată și acestea sunt acum considerate ca seturi active. Cursorul poate accesa câte un rând.
Sintaxă:
FETCH tutorial_s INTO c_code;
# 4) Cursorul este închis pentru a elibera memoria alocată. Deoarece toate înregistrările sunt obținute una câte una, cursorul este închis pentru a elibera memoria zonei de context.
Sintaxă:
CLOSE tutorial_s;
Implementarea codului cu cursorul explicit:
DECLARE -- cursor declaration CURSOR t_tutorials is SELECT code, subject, teacher FROM Tutor; t_code Tutor.code%type; t_subject Tutor.subject%type; t_teacher Tutor.teacher%type; BEGIN -- opening a cursor OPEN t_tutorials; LOOP -- fetching values from cursor FETCH t_tutorials into t_code, t_subject, t_teacher; EXIT WHEN t_tutorials%notfound; -- printing in console dbms_output.put_line('Code is: ' || t_code || ' ' || 'Subject is: ' || t_subject || ' Teacher is: ' || t_teacher); END LOOP; CLOSE t_tutorials; END; /
Ieșirea codului de mai sus ar trebui să fie:
Cursor pentru buclă
În timp ce lucrăm cu cursoare explicite, putem folosi bucla FOR în loc să folosim instrucțiuni precum FETCH, OPEN și CLOSE. Cursorul FOR Loop are indexul buclei ca o înregistrare care indică rândul obținut din baza de date. Apoi după deschiderea cursorului, acesta preia mai multe rânduri de date în mod repetat din setul de rezultate în câmpurile de înregistrare.
În cele din urmă, cursorul este închis după obținerea tuturor rândurilor. Folosim un semn punct (.) Pentru a ne referi la fiecare câmp din înregistrare. (.) semnul punct este de fapt folosit pentru selectarea unei componente.
Sintaxa pentru cursorul pentru bucla:
DECLARE CURSOR c IS SELECT code, subject, price FROM Tutorial; ... BEGIN FOR Tutorial_rec IN c LOOP ... price_sum:= price_sum + Tutorial_rec.price; END LOOP;
Aici, bucla Cursor FOR declară „ Tutorial_rec ” ca o înregistrare.
Cursor variabile
O variabilă de cursor este utilizată pentru a se referi la rândul actual din setul de rezultate care are mai multe rânduri. Poate fi folosit pentru orice tip de interogare. Este similar cu o variabilă PL / SQL, unde putem atribui valori și putem trece printr-un subprogram din baza de date. Astfel, variabilele cursorului oferă multă flexibilitate, iar datele pot fi obținute într-un proces centralizat.
Șiruri PL SQL
Șirurile din PL / SQL sunt un grup de caractere într-o anumită ordine. Dimensiunea șirului poate sau nu să fie disponibilă. Caracterele care pot face parte dintr-un șir pot fi un caracter special, spații libere, numere și alfanumerice. Astfel este un set de simboluri alese dintr-un grup de caractere.
Există trei categorii de șiruri în PL / SQL. Acestea sunt enumerate mai jos:
- Șir de lungime variabilă: Lungimea șirului nu poate depăși 32.767 și nu poate exista nicio umplere a șirului.
- Șir de lungime fixă : Lungimea șirului este menționată în declarația șirului. Șirul este drept umplut cu spații pentru a se potrivi cu lungimea specificată a șirului.
- Obiecte mari cu caracter (CLOB): Acesta este un șir de lungime variabilă care are o dimensiune de până la 128 TB.
Șirurile din PL / SQL pot fi literali sau variabile. Simbolurile cotațiilor sunt utilizate pentru literale.
Sintaxă:
'This is Software Testing Help'
De asemenea, avem opțiunea de a adăuga un citat în literalul șirului nostru. Acest lucru se realizează prin păstrarea a două ghilimele consecutive.
Sintaxă:
'We can''t go there'
Putem descrie delimitatori definite de utilizator pentru șir literal, prefixându-l cu o literă „q”.
Sintaxă:
q'(We can't go there)'
Declarația de variabile șir
Există mai multe tipuri de date în PL / SQL, cum ar fi NCHAR, CHAR, VARCHAR, VARCHAR2, CLOB și NCLOB. Tipurile de date ale setului de caractere naționale sunt prefixate cu N. Ele sunt utilizate pentru stocarea caracterelor Unicode.
Într-un șir cu lungime variabilă, trebuie menționată limita maximă a lungimii șirului.
Sintaxă:
DECLARE subject varchar(10);
Aceasta înseamnă că subiectul variabil este capabil să conțină până la 10 caractere și nu mai mult decât atât. În cazul în care lungimea maximă este omisă, este aruncată eroarea de compilare.
Într-un șir de lungime fixă, poate fi utilizat tipul de date CHAR. Nu este necesar să se definească lungimea maximă a unui șir de lungime fixă. Dacă limita este omisă, Oracle ia valoarea implicită de 1.
Sintaxă:
DECLARE subject char := 'P';
Dacă declarați o variabilă CHAR cu lungimea mai mare de 1, Oracle implicit tamponează valoarea pe care am stocat-o în acea variabilă cu spații. Acest lucru se face până când se atinge lungimea maximă specificată.
Pentru a face o declarație pentru un obiect cu caractere mari, se folosește CLOB. Lungimea maximă nu trebuie menționată aici, iar lungimea este stabilită de baza de date Oracle în sine și depinde de mărimea blocului bazei de date.
Sintaxă:
DECLARE l CLOB;
Instrucțiuni pentru alegerea tipurilor de date în PL / SQL:
- Dacă avem de-a face cu valori care au întotdeauna o lungime fixă, de exemplu, numărul de telefon mobil care are o lungime și un format constant, ar trebui să folosim tipul de date CHAR sau NCHAR.
- Altfel, ar trebui să folosim tipul de date VARCHAR2 sau NVARCHAR2.
- Dacă avem de-a face cu un șir care are mai mult de 32.767 de caractere, ar trebui să folosim tipul de date CLOB sau NCLOB.
Implementarea codului cu șiruri:
DECLARE subject varchar2(30); teacher varchar2(40); syllabus clob; options char(1); BEGIN -- Initializing values to variables subject := 'Selenium'; teacher := 'Arun'; syllabus := 'Java, WebDriver Methods, Synchronization, WebTables.'; options := 'S'; -- checking condition and if true IF options = 'S' THEN -- printing in console dbms_output.put_line(subject); dbms_output.put_line(teacher); dbms_output.put_line(syllabus); END IF; END; /
Ieșirea codului de mai sus ar trebui să fie:
Funcții și operatori PL / SQL în șir
Sl Nr. | Nume | Scopuri |
---|---|---|
unu | CONCAT (i, j) | Se adaugă șirurile i și j și returnează noul șir. |
Două | ASCII (n) | Returnează valoarea ASCII echivalentă a lui n. |
3 | CHR (n) | Returnează caracterul împreună cu valoarea ASCII echivalentă a lui n. |
4 | INSTR (i, x, start, n) | Găsește șirul i în șirul x și apoi returnează poziția de apariție. Startul se referă la poziția de început a căutării și este un parametru opțional. N este a n-a apariție a șirului și este, de asemenea, un parametru opțional. |
5 | INSTRB (i) | Returnează poziția unui șir într-un șir în octeți. |
6 | INITCAP (k) | Convertește caracterul inițial al cuvintelor individuale din șirul k în majusculă și apoi redă șirul. |
8 | LUNGIME (n) | Returnează numărul de caractere din șirul m în octeți pentru setul de caractere cu un singur octet. |
9 | LTRIM (n, x) | Elimină x caractere din stânga șirului n. X este un parametru opțional dacă nu este furnizat, elimină toate spațiile de conducere ale șirului n. |
10 | RTRIM (n, x) | Elimină x caractere din dreapta șirului n. X este un parametru opțional dacă nu este furnizat, elimină toate spațiile finale ale șirului n. |
unsprezece | TRIM ((trim_char FROM) x); | Elimină spațiile sau caracterele menționate de la începutul, sfârșitul sau ambele capete ale șirului x. |
12 | LOWER (i) | Convertește caracterele șirului i cu litere mici și apoi returnează șirul. |
13 | SUPERIOR (i) | Convertește caracterele șirului i în majuscule și apoi returnează șirul. |
14 | LPAD (i, l, x) | Tamponează șirul x spre stânga pentru a face șirul lungime la l. Parametrul x este opțional, dacă spațiile omise sunt umplute în stânga șirului i. |
cincisprezece | RPAD (i, l, x) | Tamponează șirul x spre dreapta pentru a face șirul i lungime la l. Parametrul x este opțional, dacă spațiile omise sunt umplute în dreapta șirului i. |
16 | NANVL (n, val) | Returnează val dacă n este egal cu valoarea NaN, altfel se returnează n. |
17 | NLSSORT (i) | Modifică metoda de sortare a caracterelor. Ar trebui menționat înainte de orice funcție NLS, altfel se va face sortarea implicită. |
18 | NLS_INITCAP (i) | Similar funcționalității ca funcție INITCAP, dar poate lua un alt tip de tehnică așa cum se menționează în funcția NLSSORT. |
19 | NLS_LOWER (m) | Similar funcționalității ca funcție LOWER, dar poate lua un alt tip de tehnică așa cum se menționează în funcția NLSSORT. |
douăzeci | NLS_UPPER (m) | Similar funcționalității ca funcție SUPERIOR, dar poate lua un alt tip de tehnică așa cum se menționează în funcția NLSSORT. |
douăzeci și unu | NVL (n, val) | Returnează val dacă x este egal cu valoarea NULL, altfel se returnează n. |
22 | NVL2 (n, val, val2) | Returnează val dacă x nu este egal cu valoarea NULL, altfel dacă x este egal cu NULL, se returnează val2. |
2. 3 | SOUNDEX (i) | Returnează un șir cu reprezentarea vocală a lui i. |
24 | SUBSTR (n, start, l) | Returnează un șir de șiruri n care începe de la poziția menționată în start. Parametrul l este opțional și reprezintă lungimea șirului. |
25 | SUBSTRB (n) | Funcționalitate similară funcției SUBSTR, dar parametrii sunt în octeți și nu în caractere pentru un sistem de caractere cu un singur octet. |
26 | ÎNLOCUIȚI (n, s, r) | Înlocuiește aparițiile lui s cu șirul r cu în șirul n. |
Implementarea codului cu câteva funcții șir:
DECLARE name varchar2(30) := ' software testing help!'; BEGIN dbms_output.put_line(UPPER(name)); dbms_output.put_line(LOWER(name)); dbms_output.put_line(LENGTH(name)); dbms_output.put_line(INITCAP(name)); /* get the first word in the string */ dbms_output.put_line ( SUBSTR (name, 1, 8)); /* get the location of the first 'w' */ dbms_output.put_line ( INSTR (name, 'w')); /* replace a string */ dbms_output.put_line ( REPLACE( name, 'help', 'solution')); /* trim a string from right */ dbms_output.put_line ( RTRIM(name,'!')); /* trim a string */ dbms_output.put_line ( TRIM(name)); END; /
Ieșirea codului de mai sus ar trebui să fie:
rulați fișierele .jar Windows 10
Explicația codului de mai sus:
- Prima ieșire este AJUTOR LA TESTAREA SOFTWARE-ULUI !. Returnează șirul de intrare „Ajutor pentru testarea software-ului!” cu majuscule cu ajutorul Funcția UPPER.
- A doua ieșire este ajutor pentru testarea software !. Returnează șirul de intrare AJUTOR LA TESTAREA SOFTWARE-ULUI! cu litere mici cu ajutorul funcția LOWER.
- A treia ieșire 2. 3 . Returnează lungimea șirului de intrare cu ajutorul fișierului Funcția LUNGTH.
- A patra ieșire este Ajutor pentru testarea software !. Returnează primul caracter al fiecărui cuvânt al șirului de introducere cu majuscule cu ajutorul Funcția INITCAP .
- A cincea ieșire este softwar. Returnează un subșir al șirului de intrare de la prima poziție la o lungime de 8 inclusiv un spațiu cu ajutorul lui Funcția SUBSTR .
- A șasea ieșire este 6. Returnează poziția în în șirul de intrare cu ajutorul Funcția INSTR .
- A șaptea ieșire este soluție de testare software !. Returnează un șir nou prin înlocuire Ajutor cu soluţie în șirul de intrare cu ajutorul REPLACE funcţie .
- A opta ieșire este ajutor pentru testarea software-ului. Returnează un șir nou prin tăierea caracterului ! din dreapta șirului de intrare cu ajutorul Funcția RTRIM .
- A noua ieșire este ajutor pentru testarea software !. Returnează un șir nou prin tăierea spațiilor de conducere și de urmărire din șirul de intrare cu ajutorul Funcția TRIM .
Întrebări și răspunsuri frecvente
Q # 1) Ce este cursorul în PL / SQL?
Răspuns: După executarea unei instrucțiuni SQL, baza de date Oracle construiește o memorie numită zonă contextuală. Un cursor are informațiile procesate dintr-o instrucțiune select și conține rândurile actualizate de acea operațiune SELECT.
Q # 2) Ce este un cursor și tipul de cursor?
Răspuns: După executarea unei instrucțiuni SQL, baza de date Oracle construiește o memorie numită zonă de context care este o zonă de lucru temporară. Există două categorii de cursoare - Cursor implicit și Cursor explicit.
Î # 3) Cum execut un cursor în Oracle?
Răspuns: Pentru a rula un cursor în Oracle, sintaxa este: DESCHIS<> . CURSORNAME se referă la numele cursorului disponibil în secțiunea de declarație a blocului de cod PL / SQL.
Q # 4) Putem declara cursorul din interior începe?
Răspuns: Da, putem declara mai multe cursori într-un bloc de cod PL / SQL.
Q # 5) Cum găsiți lungimea unui șir în PL / SQL?
Răspuns: Putem găsi lungimea unui șir în PL / SQL cu ajutorul funcției LENGTH (str). Aici str este șirul pentru care dorim să obținem lungimea. Această funcție returnează o valoare numerică.
Q # 6) Ce este SUBSTR în Oracle?
Răspuns: Funcția SUBSTR oferă un anumit număr de caractere dintr-o poziție specifică a unui șir. Sintaxa este SUBSTR (n, start, l). Întoarce un șir din șirul n care începe din poziția menționată în start. Parametrul l este opțional și reprezintă lungimea șirului.
Concluzie
În acest tutorial, am discutat în detaliu câteva dintre conceptele de bază ale PL / SQL.
Am acoperit următoarele subiecte enumerate mai jos:
- Cursor PL SQL: Cursor implicit și Cursor explicit
- Șiruri PL / SQL.
- Funcții și operatori în șir.
<< PREV Tutorial | URMĂTOARE Tutorial >>
Lectură recomandată
- Tutorial PL SQL pentru începători cu exemple | Ce este PL / SQL
- Tutorial Java Lungime matrice cu exemple de cod
- Tutorial de gestionare a excepțiilor C # cu exemple de cod
- Cuvânt cheie Java „acest”: Tutorial cu exemple de cod
- Tutorial Python DateTime cu exemple
- Utilizarea cursorului în MongoDB cu exemple
- C # Funcții / Metode Tutorial cu exemple de cod
- Tutorial MySQL Create View cu exemple de cod