pl sql cursor strings
V tej vadnici bomo izvedeli, kaj je PL SQL kurzor in s tem povezani koncepti, kot so implicitni in eksplicitni kurzorji, kurzor za zanko itd. Spoznali bomo tudi funkcije nizov v PL / SQL:
V Zbirke PL SQL vadnica PL / SQL serije , smo s pomočjo primerov kode spoznali metode zbiranja, Varray, ugnezdene tabele in Associative Array.
V tem članku bomo raziskali različne vrste kazalcev, ki jih ima PL / SQL. Prav tako bomo videli primere različnih vrst kazalcev s primeri kod.
Obravnavali bomo tudi nize in nekatere vgrajene funkcije nizov, ki so na voljo v PL / SQL.
klasifikacija dreves odločanja pri podatkovnem rudarjenju
Kaj se boste naučili:
Kurzor PL SQL
Oracle ima namenske pomnilniške lokacije za izvrševanje stavkov SQL in nato hrani obdelane informacije, na primer , skupno število posodobljenih vrstic.
Kazalec v PL / SQL daje ime in deluje kot kazalec na delovno področje, imenovano kontekstno območje, in nato uporablja njegove podatke. Hrani število vrstic, ki jih obdeluje stavek SQL. Te vrstice se imenujejo kot aktivni niz. Velikost aktivnega nabora je enaka številu vrstic, ki izpolnjujejo pogoj.
Obstajata dve vrsti kazalcev, ki sta navedeni spodaj:
- Implicitni kazalnik
- Izrecna kazalka
Implicitni kazalci
Implicitne kazalce privzeto dodeli Oracle med izvajanjem stavkov SQL. Vsebuje prizadete vrstice z operacijami DML, kot so UPDATE, DELETE in INSERT. Tako se implicitni kazalci uporabljajo, kadar nimamo eksplicitnega kurzorja.
Medtem ko vstavljamo vrstico, kazalec hrani te podatke. Podobno pri operacijah brisanja in posodabljanja kazalci shranijo prizadete vrstice. Implicitnih kazalcev ne dobijo nobenih imen, zato jih razvijalci ne morejo manipulirati in podatkov, ki jih vsebujejo, ni mogoče uporabiti nikjer.
Najnovejše posodobljene kazalce lahko uporabite s pomočjo atributov kurzorja. Ti atributi so lastnosti, ki pomagajo pri sklicevanju na podatkovni tip in strukturo elementov, ne da bi ponavljali njihove definicije. Vsi stolpci in tabele v zbirki podatkov imajo skupne lastnosti atributov (predstavljene z znakom%) in jih je mogoče uporabiti kot sql% ime_atributa.
Sl št. | Ime | Namen |
---|---|---|
7. | DOLŽINA (m) | Vrne število znakov v nizu m. |
eno | % NAJDENO | Daje rezultat v logični vrednosti. Vrne true, če stavki DELETE, INSERT, UPDATE ali SELECT vplivajo na posamezne ali več vrstic. V nasprotnem primeru se vrne false. |
dva | %NI NAJDENO | Daje rezultat v logični vrednosti in ima obratno funkcionalnost% FOUND. Vrne true, če stavki DELETE, INSERT, UPDATE ali SELECT ne vplivajo na nobeno vrstico. V nasprotnem primeru se vrne false. |
3. | % ISOPEN | Daje rezultat v logični vrednosti. Vrne true, če je kurzor trenutno odprt. V nasprotnem primeru se vrne false. |
4. | % ROWCOUNT | Daje število števila vrstic, pridobljenih iz stavkov DELETE, INSERT, UPDATE ali SELECT. |
5. | % TIP | Podaja tip podatkov stolpca ali spremenljivke baze podatkov. |
6. | % ROWTYPE | Daje vrsto zapisa, ki je enakovredna vrstici baze podatkov. |
Oglejmo si tabelo z imenom TUTOR.
SELECT * FROM TUTOR;
Ustvarili smo tabelo s spodnjim stavkom SQL:
CREATE TABLE TUTOR( CODE INT NOT NULL, SUBJECT VARCHAR(15) NOT NULL, TEACHER VARCHAR(15), REVIEWS VARCHAR (10) NOT NULL, PRIMARY KEY (CODE) );
V to tabelo so vstavljene vrednosti s spodnjimi stavki SQL:
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');
Izvedba kode z implicitnim kazalcem:
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; /
Rezultat zgornje kode mora biti:
Preverimo zdaj spremembe, ki se odražajo v tabeli z imenom TUTOR.
Za pridobitev stolpcev tabele uporabljamo stavek SQL:
SELECT * FROM TUTOR;
Tako vidimo, da se, kot kaže kurzor, ime učitelja s kodo = 1 posodobi v Zen.
Izrecni kazalci
Razvijalci imajo lahko lastno uporabniško določeno kontekstno območje za izvajanje operacij DML. Tako lahko nad tem izvajajo več moči. Odsek deklaracije bloka kode PL / SQL vsebuje eksplicitne kazalce. Običajno je zgrajen na operacijah SELECT, ki pridobijo več vrstic.
Sintaksa eksplicitnega kazalca:
DECLARE CURSOR <> IS <> <> BEGIN OPEN <>; FETCH <> INTO ; . . CLOSE ; END;
Izrecni kazalec deluje na spodaj naštetih procesih:
# 1) Deklaracija kurzorja za inicializacijo pomnilnika. Tu se ustvari poimenovano kontekstno območje, ki služi kot ime kazalca.
Sintaksa:
CURSOR tutorial_s IS SELECT code FROM TUTORIAL;
#two) Odpiranje kurzorja za dodeljevanje pomnilnika . Zdaj je na voljo kazalka za pridobivanje posodobljenih vrstic iz baze podatkov.
Sintaksa:
OPEN tutorial_s;
# 3) Za pridobitev podatkov je pridobljen kurzor. Po končani operaciji SELECT se dobljene vrstice shranijo v dodeljeni pomnilnik in se zdaj štejejo za aktivne nabore. Kazalec lahko dostopa do ene vrstice hkrati.
Sintaksa:
FETCH tutorial_s INTO c_code;
# 4) Kazalec je končno zaprt, da sprosti dodeljeni pomnilnik. Ker so vsi zapisi pridobljeni eden za drugim, je kazalka zaprta, da sprosti pomnilnik kontekstnega območja.
Sintaksa:
CLOSE tutorial_s;
Izvedba kode z eksplicitnim kazalcem:
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; /
Rezultat zgornje kode mora biti:
Kazalec za zanko
Med delom z eksplicitnimi kazalci lahko uporabimo zanko FOR, namesto da uporabimo stavke, kot so FETCH, OPEN in CLOSE. Kazalec FOR Loop ima indeks zanke kot zapis, ki kaže na vrstico, pridobljeno iz baze podatkov. Nato po odpiranju kurzorja večkrat vrne podatke iz nabora rezultatov v polja za zapis.
Končno se kazalec zapre, ko so pridobljene vse vrstice. Za vsako polje v zapisu uporabljamo piko (.). (.) pikica se dejansko uporablja za izbiro komponente.
Sintaksa zanke kurzorja 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;
Tu zanka kurzorja FOR razglasi „ Tutorial_rec ’ kot zapis.
Kazalec spremenljivk
Spremenljivka kazalca se uporablja za sklicevanje na trenutno vrstico v naboru rezultatov, ki ima več kot eno vrstico. Uporablja se lahko za katero koli vrsto poizvedbe. Podobno je spremenljivki PL / SQL, kjer lahko dodeljujemo vrednosti in jih lahko posredujemo prek podprograma v bazi. Tako spremenljivke kurzorja zagotavljajo veliko prilagodljivosti in podatke je mogoče dobiti v centraliziranem procesu.
PL SQL nizi
Strune v jeziku PL / SQL so skupina znakov v določenem vrstnem redu. Velikost niza je lahko na voljo ali pa tudi ne. Znaki, ki so lahko del niza, so lahko posebni znak, prazna mesta, številke in alfanumerični znaki. Tako gre za niz izbranih simbolov iz skupine znakov.
V PL / SQL obstajajo tri kategorije nizov. Ti so navedeni spodaj:
- Niz s spremenljivo dolžino: Dolžina niza ne sme presegati 32.767 in na njem ne sme biti oblazinjenja.
- Niz s fiksno dolžino : Dolžina niza je navedena v deklaraciji niza. Niz je desno oblazinjen s presledki, da se prilagodi določeni dolžini niza.
- Znaki velikih predmetov (CLOB): To je niz spremenljive dolžine, ki ima velikost do 128 TB.
Strune v PL / SQL so lahko dobesedne ali spremenljivke. Navedbeni simboli se uporabljajo za dobesedna besedila.
Sintaksa:
'This is Software Testing Help'
Prav tako imamo možnost, da v naš dobesedni niz dodamo narekovaj. To dosežemo z ohranjanjem dveh zaporednih enojnih narekovajev.
Sintaksa:
'We can''t go there'
Uporabniško določene ločilnice za dobesedno dobesedno črko lahko opišemo tako, da jo vstavimo s črko ‘q’.
Sintaksa:
q'(We can't go there)'
Izjava o spremenljivkah niza
V PL / SQL obstaja več podatkovnih vrst, kot so NCHAR, CHAR, VARCHAR, VARCHAR2, CLOB in NCLOB. Tipi podatkov nacionalnih naborov znakov imajo predpono N. Uporabljajo se za shranjevanje znakov Unicode.
V nizu s spremenljivo dolžino je treba omeniti največjo omejitev dolžine niza.
Sintaksa:
DECLARE subject varchar(10);
To pomeni, da lahko spremenljivi subjekt vsebuje do 10 znakov in ne več kot to. Če je največja dolžina izpuščena, se vrže napaka prevajanja.
V nizu s fiksno dolžino je mogoče uporabiti podatkovni tip CHAR. Ni treba določiti največje dolžine niza s fiksno dolžino. Če je omejitev izpuščena, Oracle sprejme privzeto vrednost 1.
Sintaksa:
DECLARE subject char := 'P';
Če spremenljivko CHAR prijavite z dolžino večjo od 1, Oracle privzeto doda vrednost, ki smo jo shranili v to spremenljivko, s presledki. To se naredi, dokler ni dosežena navedena največja dolžina.
Za izdelavo izjave za znakovni objekt se uporablja CLOB. Največje dolžine tukaj ni treba omenjati, dolžino pa nastavi sama baza podatkov Oracle in je odvisna od velikosti bloka baze podatkov.
Sintaksa:
DECLARE l CLOB;
Smernice za izbiro podatkovnih vrst v PL / SQL:
- Če imamo opravka z vrednostmi, ki imajo vedno fiksno dolžino, na primer, številko mobilnega telefona, ki ima stalno dolžino in obliko, bi morali uporabiti podatkovni tip CHAR ali NCHAR.
- V nasprotnem primeru bi morali uporabiti podatkovni tip VARCHAR2 ali NVARCHAR2.
- Če imamo opravka z nizom, ki ima več kot 32.767 znakov, bi morali uporabiti podatkovni tip CLOB ali NCLOB.
Izvajanje kode z nizi:
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; /
Rezultat zgornje kode mora biti:
PL / SQL funkcije in operaterji v nizu
Sl št. | Ime | Namen |
---|---|---|
eno | CONCAT (i, j) | Pripne niza i in j in vrne novi niz. |
dva | ASCII (n) | Vrne enakovredno vrednost ASCII n. |
3. | CHR (n) | Vrne znak skupaj z enakovredno ASCII vrednostjo n. |
4. | INSTR (i, x, začetek, n) | Poišče podniz i v nizu x in nato vrne položaj pojavitve. Začetek se nanaša na začetni položaj iskanja in je neobvezen parameter. N je n-ti pojav niza in je tudi neobvezen parameter. |
5. | INSTRB (i) | Vrne položaj podniza v nizu v bajtih. |
6. | INITCAP (k) | Pretvori začetni znak posameznih besed v nizu k v veliko črko in nato vrne niz. |
8. | DOLŽINAB (n) | Vrne število znakov v nizu m v bajtih za enobajtni nabor znakov. |
9. | LTRIM (n, x) | Odstrani x znakov z leve strani niza n. X je neobvezen parameter, če ni na voljo, odstrani vse vodilne presledke niza n. |
10. | RTRIM (n, x) | Odstrani x znakov z desne strani niza n. X je neobvezen parameter, če ni naveden, odstrani vse zaključne presledke niza n. |
enajst | TRIM ((trim_char FROM) x); | Odstrani presledke ali omenjene znake z začetka, konca ali obeh koncev niza x. |
12. | SPODNJA (i) | Pretvori znake niza i v male črke in nato vrne niz. |
13. | ZGOR (i) | Pretvori znake niza i v velike črke in nato vrne niz. |
14. | LPAD (i, l, x) | Vstavite niz x na levo, da spremenite dolžino i v dolžino l. Parameter x ni obvezen, če so izpuščeni presledki oblazinjeni levo od niza i. |
petnajst | RPAD (i, l, x) | Vstavite niz x na desno, da niz dolžine i nastavite na l. Parameter x ni obvezen, če so izpuščeni presledki oblazinjeni desno od niza i. |
16. | NANVL (n, val) | Vrne val, če je n enako vrednosti NaN, sicer se vrne n. |
17. | NLSSORT (i) | Spremeni način razvrščanja znakov. Omeniti ga je treba pred katero koli funkcijo NLS, sicer bo izvedeno privzeto razvrščanje. |
18. | NLS_INITCAP (i) | Po funkciji podoben funkciji INITCAP, vendar lahko sprejme drugačno tehniko, kot je omenjena v funkciji NLSSORT. |
19. | NLS_LOWER (m) | Po funkcionalnosti podoben funkciji LOWER, vendar lahko sprejme drugačno tehniko, kot je omenjena v funkciji NLSSORT. |
dvajset | NLS_UPPER (m) | Funkcionalno podoben funkciji UPPER, vendar lahko sprejme drugačno tehniko, kot je omenjena IN funkcija NLSSORT. |
enaindvajset | NVL (n, val) | Vrne val, če je x enako vrednosti NULL, sicer se vrne n. |
22. | NVL2 (n, val, val2) | Vrne val, če x ni enak vrednosti NULL, drugače, če je x enak NULL, se vrne val2. |
2. 3 | SOUNDEX (i) | Vrne niz z glasovno predstavitvijo i. |
24. | SUBSTR (n, začetek, l) | Vrne podniz niza n, ki se začne s položaja, omenjenega v startu. Parameter l ni obvezen in predstavlja dolžino podniza. |
25. | PODSTROB (n) | Po funkciji podobno kot funkcija SUBSTR, vendar so parametri v bajtih in ne v znakih za en bajtni sistem znakov. |
26. | ZAMENJAJ (n, s, r) | Nadomešča pojavitve s z nizom r z v nizu n. |
Izvedba kode z nekaterimi funkcijami 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; /
Rezultat zgornje kode mora biti:
c / c ++ vprašanja za intervju
Pojasnilo zgornje kode:
- Prvi izhod je POMOČ TESTIRANJU PROGRAMSKE OPREME !. Vrne vhodni niz 'Pomoč pri testiranju programske opreme!' v velikih črkah s pomočjo ZGORNJA funkcija.
- Drugi izhod je pomoč pri testiranju programske opreme !. Vrne vhodni niz POMOČ TESTIRANJU PROGRAMSKE OPREME! z malimi črkami s pomočjo funkcijo LOWER.
- Tretji izhod 2. 3 . Vrne dolžino vhodnega niza s pomočjo Funkcija LENGTH.
- Četrti izhod je Pomoč za testiranje programske opreme !. Vrne prvi znak vsake besede vhodnega niza v velikih črkah s pomočjo Funkcija INITCAP .
- Peti izhod je softwar. Vrne podniz vhodnega niza s prvega položaja na dolžino 8, vključno s presledkom s pomočjo Funkcija SUBSTR .
- Šesti izhod je 6. Vrne položaj v v vhodnem nizu s pomočjo Funkcija INSTR .
- Sedmi rezultat je rešitev za testiranje programske opreme !. Vrne nov niz z zamenjavo pomoč s rešitev v vhodnem nizu s pomočjo REPLACE funkcijo .
- Osmi rezultat je pomoč pri testiranju programske opreme. Vrne nov niz z obrezovanjem znaka ! z desne strani vhodnega niza s pomočjo Funkcija RTRIM .
- Deveti izhod je pomoč pri testiranju programske opreme !. Vrne nov niz z obrezovanjem vodilnega in zadnjega presledka iz vhodnega niza s pomočjo TRIM funkcija .
Pogosta vprašanja in odgovori
V # 1) Kaj je kazalec v PL / SQL?
Odgovor: Po izvedbi stavka SQL baza podatkov Oracle zgradi pomnilnik, imenovan kontekstno območje. Kazalec ima informacije, obdelane iz stavka select, in vsebuje vrstice, posodobljene s to operacijo SELECT.
V # 2) Kaj je kazalec in vrsta kazalca?
Odgovor: Po izvedbi stavka SQL baza podatkov Oracle zgradi pomnilnik, imenovan kontekstno območje, ki je začasno delovno območje. Obstajata dve kategoriji kazalcev - implicitni kurzor in eksplicitni kurzor.
V # 3) Kako v Oracle zaženem kurzor?
Odgovor: Za zagon kurzorja v Oracle je sintaksa: ODPRTO<> . CURSORNAME se nanaša na ime kazalke, ki je na voljo v razdelku deklaracije bloka kode PL / SQL.
V # 4) Ali lahko kurzor v notranjosti razglasimo za začetek?
Odgovor: Da, v bloku kode PL / SQL lahko prijavimo več kot en kazalec.
V # 5) Kako najdem dolžino niza v PL / SQL?
Odgovor: Dolžino niza lahko najdemo v PL / SQL s pomočjo funkcije LENGTH (str). Tu je str niz, za katerega želimo dobiti dolžino. Ta funkcija vrne številčno vrednost.
V # 6) Kaj je SUBSTR v Oracle?
Odgovor: Funkcija SUBSTR daje določeno število znakov z določenega položaja niza. Sintaksa je SUBSTR (n, začetek, l). Vrne podniz iz niza n, ki se začne s položaja, omenjenega v startu. Parameter l ni obvezen in predstavlja dolžino podniza.
Zaključek
V tej vadnici smo podrobno obravnavali nekatere osnovne koncepte PL / SQL.
Obravnavali smo naslednje teme, navedene spodaj:
- PL SQL kurzor: implicitni kurzor in eksplicitni kurzor
- Strune PL / SQL.
- Funkcije in operatorji v nizu.
<< PREV Tutorial | NASLEDNJA Vadnica >>
Priporočeno branje
- PL SQL Vadnica za začetnike s primeri | Kaj je PL / SQL
- Vadnica za dolžino polja Java s primeri kode
- Vadnica za ravnanje z izjemami C # s primeri kode
- Java 'this' ključna beseda: Vadnica s primeri kode
- Vadnica Python DateTime s primeri
- Uporaba kazalca v MongoDB s primeri
- Vadnica za funkcije / metode C # s primeri kode
- Vadnica za ustvarjanje pogleda MySQL s primeri kode