pl sql cursor strings
V tomto tutoriáli sa dozvieme, čo je PL SQL kurzor a súvisiace pojmy ako implicitné a explicitné kurzory, kurzor pre slučku atď. Ďalej sa dozvieme o reťazcových funkciách v PL / SQL:
V PL SQL zbierky návod na Séria PL / SQL , pomocou príkladov kódu sme sa dozvedeli o metódach zhromažďovania, Varray, Nested table a Associative Array.
V tomto článku preskúmame rôzne typy kurzorov, ktoré PL / SQL má. Uvidíme tiež implementáciu rôznych typov kurzorov s príkladmi kódu.
Diskutujeme tiež o reťazcoch a niektorých vstavaných funkciách reťazcov dostupných v PL / SQL.
ako vrátiť reťazcové pole v jave -
Čo sa dozviete:
Kurzor PL SQL
Oracle má vyhradené pamäťové miesta na vykonávanie príkazov SQL a potom zadržiava tieto spracované informácie, napríklad , celkový počet aktualizovaných riadkov.
Kurzor v PL / SQL dá meno a bude slúžiť ako ukazovateľ na pracovnú oblasť nazývanú kontextová oblasť a potom použije jej informácie. Udržuje počet riadkov spracovaných príkazom SQL. Tieto riadky sa nazývajú ako aktívna množina. Veľkosť aktívnej sady sa rovná počtu riadkov, ktoré spĺňajú danú podmienku.
Nižšie sú uvedené dva typy kurzorov:
- Implicitný kurzor
- Explicitný kurzor
Implicitné kurzory
Implicitné kurzory Oracle štandardne prideľuje pri vykonávaní príkazov SQL. Zachováva ovplyvnené riadky operáciami DML ako UPDATE, DELETE a INSERT. Implicitné kurzory sa teda používajú, keď nemáme zavedený explicitný kurzor.
Keď vkladáme riadok, kurzor uchová tieto konkrétne údaje. Podobne pre operácie odstránenia a aktualizácie sú ovplyvnené riadky uložené kurzormi. Implicitné kurzory nie sú pomenované nijako, a preto ich vývojári nemôžu manipulovať a údaje v nich obsiahnuté nie je možné použiť kdekoľvek.
Najnovšie aktualizované kurzory je možné používať pomocou atribútov kurzora. Tieto atribúty sú vlastnosti, ktoré pomáhajú odkazovať na dátový typ a štruktúru položiek bez opakovania ich definícií. Všetky stĺpce a tabuľky v databáze majú spoločné vlastnosti atribútov (predstavované znakom%) a je možné ich použiť ako sql% názov_atribútu.
Sl č. | názov | Účely |
---|---|---|
7 | DĹŽKA (m) | Vráti počet znakov v reťazci m. |
1 | % ZISTENÉ | Výsledok dá booleovský. Vráti hodnotu true, ak príkazy DELETE, INSERT, UPDATE alebo SELECT ovplyvnia jeden alebo viac riadkov. Alebo sa vráti hodnota false. |
dva | %NENÁJDENÉ | Výsledok bude boolovský a má reverznú funkčnosť% FOUND. Vráti hodnotu true, ak príkazy DELETE, INSERT, UPDATE alebo SELECT neovplyvnia žiadne riadky. Alebo sa vráti hodnota false. |
3 | %JE OTVORENÉ | Výsledok dá booleovský. Vráti hodnotu true, ak je kurzor momentálne otvorený. Alebo sa vráti hodnota false. |
4 | % ROWCOUNT | Udáva počet riadkov načítaných z príkazov DELETE, INSERT, UPDATE alebo SELECT. |
5 | % TYP | Poskytuje údajový typ stĺpca alebo premennej databázy. |
6 | % ROWTYPE | Poskytuje typ záznamu, ktorý je ekvivalentný s riadkom databázy. |
Uvažujme o tabuľke s názvom TUTOR.
SELECT * FROM TUTOR;
Vytvorili sme tabuľku s príkazom SQL uvedeným nižšie:
CREATE TABLE TUTOR( CODE INT NOT NULL, SUBJECT VARCHAR(15) NOT NULL, TEACHER VARCHAR(15), REVIEWS VARCHAR (10) NOT NULL, PRIMARY KEY (CODE) );
Do tejto tabuľky boli vložené hodnoty s príkazmi SQL uvedenými nižšie:
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');
Implementácia kódu pomocou implicitného kurzora:
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; /
Výstup z vyššie uvedeného kódu by mal byť:
Poďme si overiť zmeny prejavené v tabuľke s názvom TUTOR.
Na získanie stĺpcov tabuľky používame príkaz SQL:
SELECT * FROM TUTOR;
Vidíme teda, že ako ukazuje kurzor, meno učiteľa s kódom = 1 sa aktualizuje na zen.
Explicitné kurzory
Vývojári môžu mať svoju vlastnú používateľom definovanú kontextovú oblasť na vykonávanie operácií DML. Môžu tak nad ním vykonávať viac moci. Sekcia deklarácie bloku kódu PL / SQL obsahuje explicitné kurzory. Spravidla je postavený na operáciách SELECT, ktoré načítajú viac riadkov.
Syntax explicitného kurzora:
DECLARE CURSOR <> IS <> <> BEGIN OPEN <>; FETCH <> INTO ; . . CLOSE ; END;
Explicit Cursor pracuje na procesoch uvedených nižšie:
# 1) Kurzorová deklarácia pre inicializáciu pamäte. Tu sa vytvorí pomenovaná kontextová oblasť, ktorá slúži ako názov kurzora.
Syntax:
CURSOR tutorial_s IS SELECT code FROM TUTORIAL;
#dva) Otvorenie kurzora na pridelenie pamäte . Na načítanie aktualizovaných riadkov z databázy je teraz k dispozícii kurzor.
Syntax:
OPEN tutorial_s;
# 3) Na získanie údajov sa načíta kurzor. Po dokončení operácie SELECT sa získané riadky vložia do alokovanej pamäte a tieto sa teraz považujú za aktívne množiny. Kurzor môže pristupovať po jednom riadku.
Syntax:
FETCH tutorial_s INTO c_code;
# 4) Kurzor sa nakoniec zatvorí, aby sa uvoľnila pridelená pamäť. Pretože sa všetky záznamy získavajú jeden po druhom, kurzor sa zatvorí, aby sa uvoľnila pamäť kontextovej oblasti.
Syntax:
CLOSE tutorial_s;
Implementácia kódu s explicitným kurzorom:
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; /
Výstup z vyššie uvedeného kódu by mal byť:
Kurzor na slučku
Pri práci s explicitnými kurzormi môžeme namiesto použitia príkazov ako FETCH, OPEN a CLOSE použiť slučku FOR. Kurzor FOR Loop má index slučky ako záznam, ktorý ukazuje na riadok získaný z databázy. Ďalej po otvorení kurzora opakovane načítava viac riadkov údajov z množiny výsledkov do polí záznamu.
Nakoniec sa kurzor zatvorí po získaní všetkých riadkov. Na označenie každého poľa v zázname používame bodku (.). Znamienko (.) sa v skutočnosti používa na výber komponentu.
Syntax pre slučku Cursor 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 slučka Cursor FOR deklaruje „ Tutorial_rec ‘ ako záznam.
Premenný kurzor
Premenná kurzora sa používa na označenie aktuálneho riadku vo výsledkovej sade, ktorá má viac ako jeden riadok. Môže byť použitý pre akýkoľvek typ dotazu. Je to podobné ako s premennou PL / SQL, kde môžeme priraďovať hodnoty a možno ich odovzdávať cez podprogram v databáze. Takto poskytujú premenné kurzora veľkú flexibilitu a údaje je možné získať centralizovaným procesom.
Str SQL PL
Reťazce v PL / SQL sú skupinou znakov v konkrétnom poradí. Veľkosť reťazca môže, ale nemusí byť k dispozícii. Znaky, ktoré môžu byť súčasťou reťazca, môžu byť špeciálny znak, medzery, číslice a alfanumerické znaky. Jedná sa teda o súbor vybraných symbolov zo skupiny znakov.
V PL / SQL existujú tri kategórie reťazcov. Sú uvedené nižšie:
- Reťazec s premenlivou dĺžkou: Dĺžka šnúrky nemôže presiahnuť 32 767 a šnúrka nemôže byť polstrovaná.
- Reťazec s pevnou dĺžkou : Dĺžka reťazca je uvedená v deklarácii reťazca. Reťazec je vpravo polstrovaný medzerami, aby sa prispôsobila zadanej dĺžke reťazca.
- Veľké objekty so znakmi (CLOB): Toto je reťazec s premennou dĺžkou, ktorý má veľkosť až 128 TB.
Reťazce v PL / SQL môžu byť buď literály alebo premenné. Symboly úvodzoviek sa používajú pre literály.
Syntax:
'This is Software Testing Help'
Tiež máme možnosť pridať citát do nášho reťazcového literálu. To sa dosiahne dodržaním dvoch po sebe nasledujúcich jednoduchých úvodzoviek.
Syntax:
'We can''t go there'
Užívateľom definované oddeľovače pre reťazcový literál môžeme opísať tak, že im predponu vložíme písmenom „q“.
Syntax:
q'(We can't go there)'
Deklarácia reťazcových premenných
V PL / SQL existuje viac dátových typov ako NCHAR, CHAR, VARCHAR, VARCHAR2, CLOB a NCLOB. V dátových typoch národnej znakovej sady je predpona N. Používajú sa na ukladanie znakov Unicode.
V reťazci s premennou dĺžkou by sa mal uviesť maximálny limit dĺžky reťazca.
Syntax:
DECLARE subject varchar(10);
To znamená, že variabilný predmet je schopný pojať až 10 znakov a nie viac. V prípade, že je vynechaná maximálna dĺžka, je vyvolaná chyba kompilácie.
V reťazci s pevnou dĺžkou je možné použiť dátový typ CHAR. Nie je potrebné definovať maximálnu dĺžku reťazca s pevnou dĺžkou. Ak je tento limit vynechaný, Oracle použije predvolenú hodnotu 1.
Syntax:
DECLARE subject char := 'P';
Ak deklarujete premennú CHAR s dĺžkou presahujúcou 1, Oracle štandardne vyplní hodnotu, ktorú sme do tejto premennej uložili, medzerami. Toto sa deje, kým sa nedosiahne zadaná maximálna dĺžka.
Na vytvorenie deklarácie pre veľký znakový objekt sa používa CLOB. Maximálna dĺžka tu nemusí byť uvedená a dĺžku určuje samotná databáza Oracle a závisí od veľkosti databázového bloku.
Syntax:
DECLARE l CLOB;
Pokyny pre výber dátových typov v PL / SQL:
- Ak máme do činenia s hodnotami, ktoré majú vždy pevnú dĺžku, napríklad, číslo mobilného telefónu, ktoré má konštantnú dĺžku a formát, mali by sme použiť dátový typ CHAR alebo NCHAR.
- V opačnom prípade by sme mali použiť dátový typ VARCHAR2 alebo NVARCHAR2.
- Pokiaľ máme do činenia s reťazcom, ktorý má viac ako 32 767 znakov, mali by sme použiť dátový typ CLOB alebo NCLOB.
Implementácia kódu pomocou reťazcov:
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; /
Výstup z vyššie uvedeného kódu by mal byť:
Funkcie PL / SQL a operátory v reťazci
Sl č. | názov | Účely |
---|---|---|
1 | CONCAT (i, j) | Pripojí reťazce i a j a vráti nový reťazec. |
dva | ASCII (n) | Vráti ekvivalentnú hodnotu ASCII n. |
3 | CHR (n) | Vráti znak spolu s ekvivalentnou hodnotou ASCII n. |
4 | INSTR (i, x, štart, n) | Vyhľadá podreťazec i v reťazci x a potom vráti pozíciu výskytu. Začiatok sa týka začiatočnej polohy vyhľadávania a je voliteľným parametrom. N je n-tý výskyt reťazca a je tiež voliteľným parametrom. |
5 | INSTRB (i) | Vráti pozíciu podreťazca v reťazci v bajtoch. |
6 | INITCAP (k) | Skonvertuje počiatočný znak jednotlivých slov v reťazci k na veľké písmená a potom reťazec vráti. |
8 | DĹŽKA (n) | Vráti počet znakov v reťazci m v bajtoch pre jednobajtovú znakovú sadu. |
9 | LTRIM (n, x) | Odstráni x znakov zľava od reťazca n. X je voliteľný parameter, ak nie je uvedený, odstráni všetky úvodné medzery reťazca n. |
10 | RTRIM (n, x) | Odstráni x znakov zprava od reťazca n. X je voliteľný parameter, ak nie je uvedený, odstráni všetky koncové medzery reťazca n. |
jedenásť | TRIM ((trim_char FROM) x); | Odstráni medzery alebo spomenuté znaky od začiatku, konca alebo oboch koncov reťazca x. |
12 | NIŽŠIE (i) | Skonvertuje znaky reťazca i na malé písmená a potom vráti reťazec. |
13 | HORNÁ (i) | Skonvertuje znaky reťazca i na veľké písmená a potom vráti reťazec. |
14 | LPAD (i, l, x) | Vložte vankúšik x doľava, aby bol reťazec i dlhý až l. Parameter x je voliteľný, ak sú vynechané medzery vyplnené naľavo od reťazca i. |
pätnásť | RPAD (i, l, x) | Podložky reťazca x vpravo, aby reťazec bol i dlhý až l. Parameter x je voliteľný, ak sú vynechané medzery vyplnené napravo od reťazca i. |
16 | NANVL (n, val) | Vráti hodnotu val, ak n sa rovná hodnote NaN, inak sa vráti n. |
17 | NLSSORT (i) | Upravuje metódu triedenia znakov. Malo by sa spomenúť pred každou funkciou NLS, inak sa vykoná predvolené triedenie. |
18 | NLS_INITCAP (i) | Funkcionalita podobná funkcii INITCAP, ale môže to vyžadovať iný druh techniky, ako je uvedené vo funkcii NLSSORT. |
19 | NLS_LOWER (m) | Funkcionalita podobná funkcii LOWER, ale môže to vyžadovať iný druh techniky, ako je uvedené vo funkcii NLSSORT. |
dvadsať | NLS_UPPER (m) | Funkcionalita podobná funkcii HORNÁ, ale môže to vyžadovať iný druh techniky, ako je uvedené vo funkcii IN NLSSORT. |
dvadsaťjeden | NVL (n, val) | Vráti val, ak x sa rovná hodnote NULL, inak sa vráti n. |
22 | NVL2 (n, val, val2) | Vráti hodnotu val, ak x nie je rovné hodnote NULL, inak ak je hodnota x rovná NULL, vráti sa hodnota val2. |
2. 3 | SOUNDEX (i) | Vráti reťazec s vokálnou reprezentáciou i. |
24 | SUBSTR (n, štart, l) | Vráti podreťazec reťazca n, ktorý začína od pozície uvedenej v začiatku. Parameter l je voliteľný a predstavuje dĺžku podreťazca. |
25 | SUBSTRB (n) | Funkcionalita podobná funkcii SUBSTR, ale parametre sú v bajtoch a nie v znakoch pre jednobajtový znakový systém. |
26 | REPLACE (n, s, r) | Nahradí výskyty s reťazcom rs v reťazci n. |
Implementácia kódu s niektorými funkciami reťazca:
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; /
Výstup z vyššie uvedeného kódu by mal byť:
čo je najlepšia špionážna aplikácia pre Android
Vysvetlenie vyššie uvedeného kódu:
- Prvý výstup je POMOC TESTOVANIA SOFTVÉRU !. Vráti vstupný reťazec „Pomoc pri testovaní softvéru!“ v hornom prípade pomocou Funkcia HORNÁ.
- Druhý výstup je pomoc pri testovaní softvéru !. Vráti vstupný reťazec POMOC TESTOVANIA SOFTVÉRU! malými písmenami pomocou funkcia LOWER.
- Tretí výstup 2. 3 . Vráti dĺžku vstupného reťazca pomocou Funkcia LENGTH.
- Štvrtý výstup je Pomocník pre testovanie softvéru !. Vráti prvý znak každého slova vstupného reťazca, ktoré je veľké, pomocou klávesu Funkcia INITCAP .
- Piaty výstup je softvér. Vráti podreťazec vstupného reťazca z prvej pozície na dĺžku 8 vrátane medzery pomocou Funkcia SUBSTR .
- Šiesty výstup je 6. Vráti pozíciu v vo vstupnom reťazci pomocou Funkcia INSTR .
- Siedmy výstup je softvérové testovacie riešenie !. Vráti nový reťazec nahradením Pomoc s Riešenie vo vstupnom reťazci pomocou REPLACE funkcie .
- Ôsmy výstup je pomoc pri testovaní softvéru. Vráti nový reťazec orezaním znaku ! z pravej strany vstupného reťazca pomocou Funkcia RTRIM .
- Deviaty výstup je pomoc pri testovaní softvéru !. Vráti nový reťazec orezaním úvodných a koncových medzier od vstupného reťazca pomocou klávesu Funkcia TRIM .
Často kladené otázky a odpovede
Otázka 1) Čo je kurzor v PL / SQL?
Odpoveď: Po vykonaní príkazu SQL vytvorí databáza Oracle pamäť nazvanú kontextová oblasť. Kurzor má informácie spracované z príkazu select a obsahuje riadky aktualizované touto operáciou SELECT.
Otázka 2) Čo je kurzor a typ kurzora?
Odpoveď: Po vykonaní príkazu SQL vytvorí databáza Oracle pamäť nazvanú kontextová oblasť, ktorá je dočasnou pracovnou oblasťou. Existujú dve kategórie kurzorov - implicitný kurzor a explicitný kurzor.
Otázka č. 3) Ako spustím kurzor v systéme Oracle?
Odpoveď: Ak chcete spustiť kurzor v systéme Oracle, je to syntax: OTVORENÉ<> . CURSORNAME odkazuje na názov kurzora, ktorý je k dispozícii v deklaračnej časti bloku kódu PL / SQL.
Otázka č. 4) Môžeme vyhlásiť, že kurzor vo vnútri začína?
Odpoveď: Áno, v rámci bloku kódu PL / SQL môžeme deklarovať viac ako jeden kurzor.
Otázka č. 5) Ako zistíte dĺžku reťazca v PL / SQL?
Odpoveď: Dĺžku reťazca nájdeme v PL / SQL pomocou funkcie LENGTH (str). Tu str je reťazec, pre ktorý chceme získať dĺžku. Táto funkcia vráti číselnú hodnotu.
Otázka č. 6) Čo je SUBSTR v Oracle?
Odpoveď: Funkcia SUBSTR dáva konkrétny počet znakov z konkrétnej polohy reťazca. Syntax je SUBSTR (n, štart, l). Vráti podreťazec z reťazca n, ktorý začína od polohy uvedenej v začiatku. Parameter l je voliteľný a predstavuje dĺžku podreťazca.
Záver
V tomto tutoriáli sme podrobne rozobrali niektoré základné koncepty PL / SQL.
Prebrali sme nasledujúce témy uvedené nižšie:
- Kurzor PL SQL: implicitný kurzor a explicitný kurzor
- PL / SQL reťazce.
- Funkcie a operátory v reťazci.
<< PREV Tutorial | ĎALŠÍ výukový program >>
Odporúčané čítanie
- Výukový program PL SQL pre začiatočníkov s príkladmi Čo je to PL / SQL
- Výukový program Java Array Length s príkladmi kódu
- Výukový program na spracovanie výnimiek C # s príkladmi kódu
- Java „toto“ kľúčové slovo: Výukový program s príkladmi kódu
- Výukový program pre Python DateTime s príkladmi
- Používanie kurzora v MongoDB s príkladmi
- Výukový program pre funkcie / metódy C # s príkladmi kódu
- Výukový program na vytvorenie prehľadu MySQL s príkladmi kódu