pl sql cursor strings
U ovom uputstvu naučit ćemo što je PL SQL pokazivač i srodni koncepti poput implicitnih i eksplicitnih kursora, kursora za petlju itd. Također ćemo naučiti o funkcijama niza u PL / SQL:
U PL SQL zbirke vodič za PL / SQL serija , naučili smo o Metodama prikupljanja, Varrayu, ugniježđenoj tablici i Asocijativnom nizu uz pomoć primjera koda.
U ovom ćemo članku istražiti razne vrste kursora koje ima PL / SQL. Također ćemo vidjeti primjenu različitih vrsta kursora s primjerima koda.
Također, raspravit ćemo o stringovima i nekim ugrađenim funkcijama niza dostupnim u PL / SQL.
gdje je mrežni sigurnosni ključ?
Što ćete naučiti:
PL SQL pokazivač
Oracle ima namjenska memorijska mjesta za izvršavanje SQL izraza, a zatim drži obrađene informacije, na primjer , ukupan broj ažuriranih redaka.
Kursor u PL / SQL daje ime i djeluje kao pokazivač na područje rada koje se naziva kontekstualno područje, a zatim koristi njegove informacije. Zadržava broj redaka koje obrađuje SQL izraz. Ti se retci pozivaju kao aktivni skup. Veličina aktivnog skupa jednaka je broju redaka koji ispunjavaju uvjet.
Postoje dvije vrste pokazivača koje su navedene u nastavku:
- Implicitni pokazivač
- Eksplicitni kursor
Implicitni pokazivači
Implicitne kursore Oracle zadaje tijekom izvršavanja SQL izraza. Sadrži pogođene retke DML operacijama poput UPDATE, DELETE i INSERT. Stoga se implicitni kursori koriste kada nemamo eksplicitni kursor na mjestu.
Dok umetamo redak, pokazivač zadržava te određene podatke. Slično tome, za operacije brisanja i ažuriranja kursori pohranjuju pogođene retke. Implicitni pokazivači ne dobivaju nikakva imena i stoga ih programeri ne mogu manipulirati, a podaci sadržani na njima ne mogu se nigdje koristiti.
Najnoviji ažurirani pokazivači mogu se koristiti uz pomoć atributa kursora. Ti su atributi svojstva koja pomažu u upućivanju na vrstu podataka i strukturu stavki bez ponavljanja njihovih definicija. Svi stupci i tablice u bazi podataka imaju zajedničke karakteristike atributa (predstavljene znakom%) i mogu se koristiti kao sql% atribut_ime.
Sl br. | Ime | Svrha |
---|---|---|
7 | DUŽINA (m) | Vraća broj znakova u nizu m. |
1 | %PRONAĐENO | Daje rezultat u logičkoj vrijednosti. Vraća true ako izrazi DELETE, INSERT, UPDATE ili SELECT utječu na jedan ili više redaka. Inače se vraća false. |
dva | %NIJE PRONAĐENO | Daje rezultat u logičkoj vrijednosti i ima obrnutu funkcionalnost% FOUND. Vraća true ako izrazi DELETE, INSERT, UPDATE ili SELECT ne utječu na redove. Inače se vraća false. |
3 | %OTVORENO JE | Daje rezultat u logičkoj vrijednosti. Vraća true ako je kursor trenutno otvoren. Inače se vraća false. |
4 | % ROWCOUNT | Daje broj broja redova dohvaćenih iz naredbi DELETE, INSERT, UPDATE ili SELECT. |
5 | %TIP | Daje tip podataka stupca ili varijable baze podataka. |
6 | % ROWTYPE | Daje vrstu zapisa koja je ekvivalentna retku baze podataka. |
Razmotrimo tablicu koja se zove TUTOR.
SELECT * FROM TUTOR;
Stvorili smo tablicu s SQL izrazom danim u nastavku:
CREATE TABLE TUTOR( CODE INT NOT NULL, SUBJECT VARCHAR(15) NOT NULL, TEACHER VARCHAR(15), REVIEWS VARCHAR (10) NOT NULL, PRIMARY KEY (CODE) );
U ovu tablicu umetnute su vrijednosti s dolje navedenim SQL izrazima:
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');
Implementacija koda s implicitnim kursorom:
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; /
Izlaz gornjeg koda trebao bi biti:
Provjerimo sada promjene odražene u tablici pod nazivom TUTOR.
Koristimo SQL izraz da bismo dobili stupce tablice:
SELECT * FROM TUTOR;
Stoga vidimo da se, kako pokazuje kurzor, ime učitelja s kodom = 1 ažurira na Zen.
Eksplicitni pokazivači
Programeri mogu imati vlastito korisničko definirano kontekstno područje za pokretanje DML operacija. Tako nad njim mogu ostvariti više moći. Odjeljak deklaracije PL / SQL bloka koda sadrži eksplicitne pokazivače. Obično se gradi na SELECT operacijama koje dohvaćaju više redaka.
Sintaksa eksplicitnog kursora:
DECLARE CURSOR <> IS <> <> BEGIN OPEN <>; FETCH <> INTO ; . . CLOSE ; END;
Eksplicitni pokazivač radi na dolje navedenim procesima:
# 1) Deklaracija kursora za inicijalizaciju memorije. Ovdje se kreira imenovano kontekstno područje koje služi kao naziv kursora.
Sintaksa:
CURSOR tutorial_s IS SELECT code FROM TUTORIAL;
#dva) Otvor kursora za dodjelu memorije . Kursor je sada dostupan za dohvaćanje ažuriranih redaka iz baze podataka.
Sintaksa:
OPEN tutorial_s;
# 3) Dohvaća se pokazivač za dobivanje podataka. Nakon što se izvrši operacija SELECT, dobiveni retci stavljaju se u dodijeljenu memoriju i oni se sada smatraju aktivnim skupovima. Kursor može pristupiti jednom retku.
Sintaksa:
FETCH tutorial_s INTO c_code;
# 4) Pokazivač je konačno zatvoren da oslobodi dodijeljenu memoriju. Kako se svi zapisi dobivaju jedan po jedan, pokazivač se zatvara kako bi se oslobodila memorija kontekstnog područja.
Sintaksa:
CLOSE tutorial_s;
Implementacija koda s eksplicitnim kursorom:
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; /
Izlaz gornjeg koda trebao bi biti:
Kursor za petlju
Dok radimo s eksplicitnim kursorima, možemo koristiti FOR petlju umjesto da koristimo izjave poput FETCH, OPEN i CLOSE. Kursor FOR Loop ima indeks petlje kao zapis koji upućuje na red dobiven iz baze podataka. Sljedeće nakon otvaranja kursora, više puta uzastopno dohvaća više redaka podataka iz skupa rezultata u polja zapisa.
Napokon, pokazivač se zatvara nakon što se dobiju svi retci. Znak točka (.) Koristimo za upućivanje na svako polje u zapisu. (.) Točkasti znak zapravo se koristi za odabir komponente.
Sintaksa za petlju pokazivača For:
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;
Ovdje petlja Cursor FOR izjavljuje ' Tutorial_rec ’ kao zapis.
Kursor varijabli
Varijabla kursora koristi se za pozivanje na trenutni redak u skupu rezultata koji ima više od jednog retka. Može se koristiti za bilo koju vrstu upita. Slična je varijabli PL / SQL, kojoj možemo dodijeliti vrijednosti i možemo je proslijediti putem potprograma u bazi podataka. Tako varijable kursora pružaju veliku fleksibilnost i podaci se mogu dobiti centraliziranim postupkom.
PL SQL nizovi
Nizovi u PL / SQL-u skupina su znakova određenog redoslijeda. Veličina niza može biti dostupna, ali ne mora. Znakovi koji mogu biti dijelom niza mogu biti posebni znakovi, praznine, brojevi i alfanumerički. Dakle, to je skup izabranih simbola iz skupine znakova.
Postoje tri kategorije nizova u PL / SQL-u. Oni su navedeni u nastavku:
- Niz promjenljive duljine: Duljina niza ne može premašiti 32.767 i ne može biti dopuna na nizu.
- Niz fiksne duljine : Duljina niza spominje se u deklaraciji niza. Niz je desno podstavljen razmacima kako bi se smjestila navedena duljina niza.
- Znakovi velikih predmeta (CLOB): Ovo je niz promjenljive duljine veličine do 128 TB.
Nizovi u PL / SQL-u mogu biti literali ili varijable. Navodi se koriste za literale.
Sintaksa:
'This is Software Testing Help'
Također, imamo mogućnost dodavanja citata unutar našeg doslovnog niza. To se postiže zadržavanjem dva uzastopna pojedinačna navodnika.
Sintaksa:
'We can''t go there'
Korisnički definirane graničnike za string literal možemo opisati dodavanjem slova 'q'.
Sintaksa:
q'(We can't go there)'
Izjava o nizovitim varijablama
U PL / SQL-u postoji više vrsta podataka poput NCHAR, CHAR, VARCHAR, VARCHAR2, CLOB i NCLOB. Tipovi podataka nacionalnog skupa znakova imaju prefiks N. Koriste se za pohranu Unicode znakova.
U nizu s promjenjivom duljinom treba navesti maksimalno ograničenje duljine niza.
Sintaksa:
DECLARE subject varchar(10);
To znači da varijabilni subjekt može sadržavati do 10 znakova i ne više od toga. U slučaju kada je izostavljena maksimalna duljina, izbacuje se pogreška sastavljanja.
U nizu fiksne duljine može se koristiti tip podataka CHAR. Nije potrebno definirati maksimalnu duljinu niza fiksne duljine. Ako je ograničenje izostavljeno, Oracle uzima zadanu vrijednost 1.
Sintaksa:
DECLARE subject char := 'P';
Ako deklarirate CHAR varijablu duljine koja prelazi 1, Oracle će prema zadanim postavkama vrijednost koju smo pohranili u tu varijablu podmetnuti razmacima. To se radi dok se ne dosegne navedena maksimalna duljina.
Za izradu deklaracije za karakterno velik objekt koristi se CLOB. Ovdje ne treba spominjati maksimalnu duljinu, a duljinu postavlja sama Oracleova baza podataka i ovisi o veličini bloka baze podataka.
Sintaksa:
DECLARE l CLOB;
Smjernice za odabir vrsta podataka u PL / SQL:
- Ako imamo posla s vrijednostima koje uvijek imaju fiksnu duljinu, na primjer, broj mobilnog telefona koji ima stalnu duljinu i format, trebali bismo koristiti tip podataka CHAR ili NCHAR.
- Inače, trebali bismo koristiti tip podataka VARCHAR2 ili NVARCHAR2.
- Ako imamo posla s nizom koji ima više od 32.767 znakova, trebali bismo koristiti tip podataka CLOB ili NCLOB.
Implementacija koda sa nizovima:
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; /
Izlaz gornjeg koda trebao bi biti:
PL / SQL funkcije i operateri u nizu
Sl br. | Ime | Svrha |
---|---|---|
1 | CONCAT (i, j) | Dodaje nizove i i j i vraća novi niz. |
dva | ASCII (n) | Vraća ekvivalentnu ASCII vrijednost n. |
3 | CHR (n) | Vraća znak zajedno s ekvivalentnom ASCII vrijednošću n. |
4 | INSTR (i, x, start, n) | Pronalazi podniz i u x nizu, a zatim vraća položaj pojavljivanja. Početak se odnosi na početni položaj pretraživanja i neobavezan je parametar. N je n-ta pojava niza i također je neobavezni parametar. |
5 | INSTRB (i) | Vraća položaj podniza u nizu u bajtovima. |
6 | INITCAP (k) | Pretvara početni znak pojedinačnih riječi u nizu k u veliko slovo, a zatim vraća niz. |
8 | DUŽINAB (n) | Vraća broj znakova u nizu m u bajtovima za jednobajtni skup znakova. |
9 | LTRIM (n, x) | Uklanja x znakova s lijeve strane niza n. X je neobavezni parametar, ako nije naveden, uklanja sve vodeće razmake niza n. |
10 | RTRIM (n, x) | Uklanja x znakova s desne strane niza n. X je neobavezni parametar, ako nije naveden, uklanja sve prazne prostore niza n. |
jedanaest | TRIM ((trim_char FROM) x); | Uklanja razmake ili spomenute znakove s početka, kraja ili oba kraja niza x. |
12 | DONJI (i) | Pretvara znakove niza i u mala slova, a zatim vraća niz. |
13 | GORNJI (i) | Pretvara znakove niza i u velika slova, a zatim vraća niz. |
14 | LPAD (i, l, x) | Podmeće niz x lijevo kako bi niz i bio duljina l. Parametar x nije obavezan ako su izostavljeni razmaci dodani lijevo od niza i. |
petnaest | RPAD (i, l, x) | Podmeće niz x udesno da bi niz i bio duljina l. Parametar x nije obavezan, ako su izostavljeni razmaci dodani desno od niza i. |
16 | NANVL (n, val) | Vraća val ako je n jednako vrijednosti NaN, inače se vraća n. |
17 | NLSSORT (i) | Izmjenjuje način sortiranja znakova. Treba ga spomenuti prije bilo koje funkcije NLS-a, inače će se izvršiti zadano sortiranje. |
18 | NLS_INITCAP (i) | Funkcionalno sličan funkciji INITCAP, ali može imati i drugačiju tehniku kao što je spomenuto u funkciji NLSSORT. |
19 | NLS_LOWER (m) | Sličan u funkcionalnosti kao funkcija LOWER, ali može imati i drugačiju tehniku kao što je spomenuto u funkciji NLSSORT. |
dvadeset | NLS_UPPER (m) | Funkcionalno sličan funkciji GORNJI, ali može imati i drugačiju tehniku kao što je spomenuto u funkciji NLSSORT. |
dvadeset i jedan | NVL (n, val) | Vraća val ako je x jednako vrijednosti NULL, inače se vraća n. |
22 | NVL2 (n, val, val2) | Vraća val ako x nije jednako vrijednosti NULL, u suprotnom ako je x jednako NULL, vraća se val2. |
2. 3 | SOUNDEX (i) | Vraća niz koji ima vokalni prikaz i. |
24 | SUBSTR (n, početak, l) | Vraća podniz niza n koji započinje od položaja spomenutog u startu. Parametar l nije obavezan i predstavlja duljinu podniza. |
25 | PODLOGA (n) | Funkcionalno slično funkciji SUBSTR, ali parametri su u bajtovima, a ne u znakovima za jedan bajt sustav znakova. |
26 | ZAMJENA (n, s, r) | Zamjenjuje pojave s s nizom r sa u nizu n. |
Implementacija koda s nekim funkcijama niza:
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; /
Izlaz gornjeg koda trebao bi biti:
koja je najbolja špijunska aplikacija za android
Objašnjenje gornjeg koda:
- Prvi izlaz je POMOĆ ZA TESTIRANJE SOFTVERA !. Vraća ulazni niz ‘Pomoć pri testiranju softvera!’ velikim slovom uz pomoć GORNJA funkcija.
- Drugi izlaz je pomoć za testiranje softvera !. Vraća ulazni niz POMOĆ ZA TESTIRANJE SOFTVERA! malim slovom uz pomoć funkcija LOWER.
- Treći izlaz 2. 3 . Vraća duljinu ulaznog niza uz pomoć Funkcija DUŽINA.
- Četvrti izlaz je Pomoć za testiranje softvera !. Vraća prvi znak svake riječi ulaznog niza velikim slovom uz pomoć znaka INITCAP funkcija .
- Peti izlaz je softwar. Vraća podniz ulaznog niza s prvog položaja na duljinu od 8 uključujući razmak uz pomoć Funkcija SUBSTR .
- Šesti izlaz je 6. Vraća položaj u u ulaznom nizu uz pomoć INSTR funkcija .
- Sedmi izlaz je rješenje za testiranje softvera !. Vraća novi niz zamjenom Pomozite s riješenje u ulaznom nizu uz pomoć REPLACE funkcija .
- Osmi izlaz je pomoć za testiranje softvera. Vraća novi niz obrezivanjem znaka ! s desne strane ulaznog niza uz pomoć RTRIM funkcija .
- Deveti izlaz je pomoć za testiranje softvera !. Vraća novi niz obrezujući vodeći i prateći razmak iz ulaznog niza uz pomoć TRIM funkcija .
Često postavljana pitanja i odgovori
P # 1) Što je pokazivač u PL / SQL-u?
Odgovor: Nakon izvršavanja SQL izraza, Oracle baza podataka gradi memoriju koja se naziva kontekstnim područjem. Kursor ima podatke obrađene iz naredbe select i sadrži retke ažurirane tom operacijom SELECT.
P # 2) Što je pokazivač i vrsta pokazivača?
Odgovor: Nakon izvršavanja SQL izraza, Oracle baza podataka gradi memoriju koja se naziva kontekstnim područjem i koja je privremeno radno područje. Postoje dvije kategorije kursora - implicitni kursor i eksplicitni kursor.
P # 3) Kako pokrenuti kursor u Oracleu?
Odgovor: Za pokretanje kursora u Oracleu sintaksa je: OTVOREN<> . CURSORNAME se odnosi na ime kursora dostupno u odjeljku deklaracije PL / SQL bloka koda.
P # 4) Možemo li proglasiti kursor iznutra za početak?
Odgovor: Da, možemo prijaviti više od jednog pokazivača unutar PL / SQL bloka koda.
P # 5) Kako pronaći dužinu niza u PL / SQL-u?
Odgovor: Duljinu niza možemo pronaći u PL / SQL uz pomoć funkcije LENGTH (str). Ovdje je str niz za koji želimo dobiti duljinu. Ova funkcija vraća numeričku vrijednost.
P # 6) Što je SUBSTR u Oracleu?
Odgovor: Funkcija SUBSTR daje određeni broj znakova s određenog položaja niza. Sintaksa je SUBSTR (n, start, l). Vraća podniz iz niza n koji započinje od položaja spomenutog u startu. Parametar l nije obavezan i predstavlja duljinu podniza.
Zaključak
U ovom uputstvu detaljno smo raspravljali o nekim osnovnim konceptima PL / SQL-a.
Obradili smo sljedeće teme navedene u nastavku:
- PL SQL kursor: implicitni kursor i eksplicitni kursor
- PL / SQL nizovi.
- Funkcije i operatori u nizu.
<< PREV Tutorial | SLJEDEĆA Vodič >>
Preporučena literatura
- PL SQL Vodič za početnike s primjerima | Što je PL / SQL
- Vodič o dužini Java polja s primjerima koda
- Vodič za rukovanje iznimkama za C # s primjerima koda
- Java 'this' ključna riječ: Vodič s primjerima koda
- Python DateTime Vodič s primjerima
- Primjena pokazivača u MongoDB-u s primjerima
- Vodič za funkcije # C / Metode s primjerima koda
- MySQL Vodič za stvaranje pogleda s primjerima koda