pl sql cursor strings
I denne vejledning lærer vi, hvad der er en PL SQL-markør og relaterede begreber som implicitte og eksplicitte markører, markør for loop osv. Vi lærer også om strengfunktioner i PL / SQL:
I PL SQL-samlinger tutorial af PL / SQL-serien , lærte vi om indsamlingsmetoder, Varray, indlejret tabel og associerende matrix ved hjælp af kodeeksempler.
I denne artikel vil vi undersøge de forskellige typer markører, som PL / SQL har. Vi vil også se implementeringen af forskellige typer markører med kodeeksempler.
Vi diskuterer også strenge og nogle af de indbyggede strengfunktioner, der er tilgængelige i PL / SQL.
microsoft dynamics ax tutorial til begyndere
Hvad du vil lære:
PL SQL-markør
Oracle har dedikerede hukommelsesplaceringer til udførelse af SQL-sætninger, og derefter har den den behandlede information for eksempel , det samlede antal opdaterede rækker.
En markør i PL / SQL giver et navn og fungerer som en markør til arbejdsområdet kaldet et kontekstområde og bruger derefter dets oplysninger. Det holder antallet af rækker behandlet af SQL-sætningen. Disse rækker kaldes som et aktivt sæt. Størrelsen på det aktive sæt er lig med antallet af rækker, der opfylder betingelsen.
Der er to typer markører, der er anført nedenfor:
- Implicit markør
- Eksplicit markør
Implicitte markører
De implicitte markører allokeres af Oracle som standard under udførelse af SQL-sætninger. Det indeholder de berørte rækker af DML-operationer som OPDATERING, SLET og INDSÆT. Således anvendes implicitte markører, når vi ikke har en eksplicit markør på plads.
Mens vi indsætter en række, gemmer markøren de specifikke data. Til sletning og opdatering af handlinger lagres de berørte rækker ligeledes af markørerne. De implicitte markører får ikke nogen navne og kan derfor ikke manipuleres af udviklerne, og dataene på den kan ikke bruges overalt.
De seneste opdaterede markører kan bruges ved hjælp af markørattributter. Disse attributter er de egenskaber, der hjælper med at henvise til datatype og struktur for varer uden at gentage deres definitioner. Alle kolonner og tabeller i en database har en fælles attribut (repræsenteret ved% tegn) karakteristika, og de kan bruges som sql% attributnavn.
Sl nr. | Navn | Formål |
---|---|---|
7 | LÆNGDE (m) | Returnerer antallet af tegn i streng m. |
1 | % FUNDET | Giver resultatet på boolsk. Returnerer sandt, hvis DELETE, INSERT, UPDATE eller SELECT-sætninger påvirker enkelt eller flere rækker. Ellers returneres falsk. |
to | %IKKE FUNDET | Giver resultatet i boolsk og har omvendt funktionalitet på% FOUND. Returnerer sandt, hvis DELETE, INSERT, UPDATE eller SELECT-sætninger ikke påvirker nogen rækker. Ellers returneres falsk. |
3 | %ER ÅBEN | Giver resultatet på boolsk. Returnerer sandt, hvis markøren i øjeblikket er åben. Ellers returneres falsk. |
4 | % ROWCOUNT | Giver optællingen af antallet af rækker, der er hentet fra DELETE, INSERT, UPDATE eller SELECT-sætninger. |
5 | %TYPE | Giver datatypen for kolonnen eller variablen i databasen. |
6 | % ROWTYPE | Giver den posttype, der svarer til en databaserække. |
Lad os overveje en tabel, der hedder TUTOR.
SELECT * FROM TUTOR;
Vi har oprettet en tabel med SQL-sætningen nedenfor:
CREATE TABLE TUTOR( CODE INT NOT NULL, SUBJECT VARCHAR(15) NOT NULL, TEACHER VARCHAR(15), REVIEWS VARCHAR (10) NOT NULL, PRIMARY KEY (CODE) );
Indsatte værdier til denne tabel med SQL-sætninger angivet nedenfor:
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');
Kodeimplementering med den implicitte markør:
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; /
Output af ovenstående kode skal være:
Lad os nu kontrollere de ændringer, der afspejles i tabellen, der hedder TUTOR.
Vi bruger en SQL-sætning til at få kolonnerne i tabellen:
SELECT * FROM TUTOR;
Således ser vi, at som peget af markøren bliver lærerens navn med kode = 1 opdateret til Zen.
Eksplicitte markører
Udviklerne kan have deres eget brugerdefinerede kontekstområde til at køre DML-operationer. Således kan de udøve mere magt over det. Erklæringsafsnittet i PL / SQL-kodeblokken indeholder eksplicitte markører. Det er normalt bygget på SELECT-operationer, der henter flere rækker.
Syntaks for eksplicit markør:
DECLARE CURSOR <> IS <> <> BEGIN OPEN <>; FETCH <> INTO ; . . CLOSE ; END;
Eksplicit markør arbejder på nedenstående processer:
# 1) Markørerklæring til initialisering af hukommelse. Her oprettes et navngivet kontekstområde, der fungerer som et markørnavn.
Syntaks:
CURSOR tutorial_s IS SELECT code FROM TUTORIAL;
#to) Markøråbning til allokering af hukommelse . En markør er nu tilgængelig til at hente de opdaterede rækker fra databasen.
Syntaks:
OPEN tutorial_s;
# 3) Markør hentes for at hente dataene. Når SELECT-operationen er udført, placeres de opnåede rækker i den tildelte hukommelse, og disse betragtes nu som aktive sæt. Markøren kan få adgang til en række ad gangen.
Syntaks:
FETCH tutorial_s INTO c_code;
# 4) Markøren lukkes endelig for at frigøre den tildelte hukommelse. Da alle poster opnås en efter en, lukkes markøren for at frigive hukommelse i kontekstområdet.
Syntaks:
CLOSE tutorial_s;
Kodeimplementering med eksplicit markør:
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; /
Output af ovenstående kode skal være:
Markør til løkke
Mens vi arbejder med eksplicitte markører, kan vi bruge FOR-loop i stedet for at bruge udsagn som FETCH, OPEN og CLOSE. Cursor FOR Loop har loop-indekset som en post, der peger på rækken opnået fra databasen. Næste efter åbning af markøren henter den flere rækker med data gentagne gange fra resultatsættet til rekordfelterne.
Endelig lukkes markøren, når alle rækkerne er opnået. Vi bruger et priktegn (.) Til at henvise til hvert felt i posten. (.) Punkttegn bruges faktisk til at vælge en komponent.
Syntaksen for Cursor For loop:
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;
Her erklærer Cursor FOR-løkken ' Tutorial_rec ' som en rekord.
Variabler markør
En markørvariabel bruges til at henvise til den nuværende række i resultatsættet, der har mere end en række. Det kan bruges til alle typer forespørgsler. Det ligner en variabel af PL / SQL, hvor vi kan tildele værdier og kan sendes via et underprogram i databasen. Markørvariabler giver således meget fleksibilitet, og data kan opnås i en centraliseret proces.
PL SQL-strenge
Strengene i PL / SQL er en gruppe tegn i en bestemt rækkefølge. Strengens størrelse er muligvis ikke tilgængelig. De tegn, der kan være en del af en streng, kan være et specialtegn, tomme felter, tal og alfanumeriske. Således er det et sæt valgte symboler fra en gruppe tegn.
Der er tre kategorier af strenge i PL / SQL. Disse er anført nedenfor:
- Variabel længde streng: Strengens længde må ikke overstige 32.767, og strengen kan ikke polstres.
- Fast længde streng : Strengens længde er nævnt i strengerklæringen. Strengen er polstret til højre med mellemrum for at imødekomme den angivne længde af strengen.
- Tegn store objekter (CLOB): Dette er en streng med variabel længde, der har en størrelse op til 128 TB.
Strengene i PL / SQL kan enten være bogstaver eller variabler. Citatsymboler bruges til bogstaver.
Syntaks:
'This is Software Testing Help'
Vi har også muligheden for at tilføje et tilbud inden for vores streng bogstaveligt. Dette opnås ved at holde to på hinanden følgende enkelt tilbud.
Syntaks:
'We can''t go there'
Vi kan beskrive brugerdefinerede afgrænsere for strenglitteral ved at præfikse det med et 'q' bogstav.
Syntaks:
q'(We can't go there)'
Erklæring om strengvariabler
Der er flere datatyper i PL / SQL som NCHAR, CHAR, VARCHAR, VARCHAR2, CLOB og NCLOB. De nationale tegnsætdatatyper er præfikset med N. De bruges til lagring af Unicode-tegn.
I en streng med variabel længde skal den maksimale grænse for strenglængden nævnes.
Syntaks:
DECLARE subject varchar(10);
Dette betyder, at det variable emne er i stand til at rumme op til 10 tegn og ikke mere end det. I det tilfælde, hvor den maksimale længde er udeladt, kastes kompileringsfejl.
I en streng med fast længde kan datatypen CHAR bruges. Det er ikke nødvendigt at definere den maksimale længde af en streng med fast længde. Hvis grænsen udelades, tager Oracle standardværdien 1.
Syntaks:
DECLARE subject char := 'P';
Hvis du erklærer en CHAR-variabel med længden på mere end 1, placerer Oracle som standard den værdi, som vi har gemt til den variabel med mellemrum. Dette gøres, indtil den angivne maksimale længde er nået.
CLOB bruges til at afgive en erklæring for et stort objekt. Den maksimale længde behøver ikke at blive nævnt her, og længden indstilles af selve Oracle-databasen og afhænger af datablokens størrelse.
Syntaks:
DECLARE l CLOB;
Retningslinjer for valg af datatyper i PL / SQL:
- Hvis vi har at gøre med værdier, der altid har en fast længde, for eksempel, mobiltelefonnummeret, der har konstant længde og format, skal vi bruge datatypen CHAR eller NCHAR.
- Ellers skal vi bruge VARCHAR2 eller NVARCHAR2 datatype.
- Hvis vi har at gøre med en streng, der har mere end 32.767 tegn, skal vi bruge CLOB- eller NCLOB-datatypen.
Kodeimplementering med strenge:
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; /
Output af ovenstående kode skal være:
PL / SQL-funktioner og operatører i streng
Sl nr. | Navn | Formål |
---|---|---|
1 | CONCAT (i, j) | Tilføjer strengene i og j og returnerer den nye streng. |
to | ASCII (n) | Returnerer den tilsvarende ASCII-værdi på n. |
3 | CHR (n) | Returnerer tegnet sammen med den tilsvarende ASCII-værdi på n. |
4 | INSTR (i, x, start, n) | Finder understrenget i i x-streng og returnerer derefter forekomsten. Starten refererer til startpositionen for søgning og er en valgfri parameter. N er den nende forekomst af strengen og er også en valgfri parameter. |
5 | INSTRB (i) | Returnerer placeringen af en substring i en streng i bytes. |
6 | INITCAP (k) | Konverterer den oprindelige karakter af individuelle ord i streng k til store bogstaver og giver derefter strengen tilbage. |
8 | LÆNGDE (n) | Returnerer antallet af tegn i streng m i byte for enkelt byte tegnsæt. |
9 | LTRIM (n, x) | Fjerner x tegn fra venstre for streng n. X er en valgfri parameter, hvis den ikke findes, fjerner alle ledende mellemrum i strengen n. |
10 | RTRIM (n, x) | Fjerner x tegn fra højre for streng n. X er en valgfri parameter, hvis den ikke er angivet, fjerner alle efterfølgende mellemrum i strengen n. |
elleve | TRIM ((trim_char FROM) x); | Fjerner mellemrum eller nævnte tegn fra begyndelsen, slutningen eller begge ender af strengen x. |
12 | NEDRE (i) | Konverterer tegnene i streng i til små bogstaver og returnerer derefter strengen. |
13 | ØVRE (i) | Konverterer tegnene i streng i til store bogstaver og returnerer derefter strengen. |
14 | LPAD (i, l, x) | Pads streng x til venstre for at gøre strengen i længden til l. Parameteren x er valgfri, hvis udeladte mellemrum er polstret til venstre for streng i. |
femten | RPAD (i, l, x) | Pads streng x til højre for at gøre strengen i længden til l. Parameteren x er valgfri, hvis udeladte mellemrum er polstret til højre for streng i. |
16 | NANVL (n, val) | Returnerer val, hvis n er lig med NaN-værdien, ellers returneres n. |
17 | NLSSORT (i) | Ændrer sorteringsmetoden for tegn. Det skal nævnes før enhver NLS-funktion, ellers foretages standardsorteringen. |
18 | NLS_INITCAP (i) | Lignende i funktionalitet som funktion INITCAP, men det kan tage en anden slags teknik som nævnt i funktion NLSSORT. |
19 | NLS_LOWER (m) | Tilsvarende i funktionalitet som funktion NEDRE, men det kan tage en anden slags teknik som nævnt i funktion NLSSORT. |
tyve | NLS_UPPER (m) | Tilsvarende i funktionalitet som funktion ØVRE, men det kan tage en anden slags teknik som nævnt I funktion NLSSORT. |
enogtyve | NVL (n, val) | Returnerer val, hvis x er lig med NULL-værdien, ellers returneres n. |
22 | NVL2 (n, val, val2) | Returnerer val, hvis x ikke er lig med NULL-værdien, ellers hvis x er lig med NULL, returneres val2. |
2. 3 | SOUNDEX (i) | Returnerer en streng med vokalrepræsentation af i. |
24 | SUBSTR (n, start, l) | Returnerer en understreng af streng n, der starter fra den position, der er nævnt i starten. Parameteren l er valgfri og repræsenterer længden af underlaget. |
25 | SUBSTRB (n) | Lignende i funktionalitet som funktion SUBSTR, men parametre findes i byte og ikke i tegn til et enkelt byte-tegnsystem. |
26 | UDSKIFT (n, s, r) | Erstatter forekomsterne af s med strengen r med i strengen n. |
Kodeimplementering med nogle strengfunktioner:
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; /
Output af ovenstående kode skal være:
dvd-rippesoftware til Windows 10
Forklaring til ovenstående kode:
- Den første output er HJÆLP TIL TEST AF SOFTWARE !. Returnerer inputstrengen 'Hjælp til softwaretest!' i store bogstaver ved hjælp af OPPER-funktion.
- Den anden output er software test hjælp !. Returnerer inputstrengen SOFTWARE TESTHJÆLP! i små bogstaver ved hjælp af funktionen LOWER.
- Den tredje output 2. 3 . Returnerer længden af inputstrengen ved hjælp af LÆNGDE-funktion.
- Den fjerde output er Hjælp til test af software !. Returnerer det første tegn i hvert ord i inputstrengen i store bogstaver ved hjælp af INITCAP-funktion .
- Den femte output er softwar. Returnerer en understreng af inputstrengen fra den første position til en længde på 8 inklusive et mellemrum ved hjælp af SUBSTR-funktion .
- Den sjette output er 6. Returnerer positionen af i i inputstrengen ved hjælp af INSTR-funktion .
- Den syvende output er software test løsning !. Returnerer en ny streng ved at erstatte den Hjælp med opløsning i inputstrengen ved hjælp af REPLACE fungere .
- Den ottende output er hjælp til softwaretest. Returnerer en ny streng ved at trimme tegnet ! fra højre for inputstrengen ved hjælp af RTRIM-funktion .
- Den niende output er software test hjælp !. Returnerer en ny streng ved at trimme de forreste og bageste mellemrum fra inputstrengen ved hjælp af TRIM-funktion .
Ofte stillede spørgsmål og svar
Q # 1) Hvad er markør i PL / SQL?
Svar: Når en SQL-sætning er udført, bygger Oracle-databasen en hukommelse kaldet kontekstområde. En markør behandler oplysningerne fra en selektionserklæring og indeholder de rækker, der er opdateret af den SELECT-operation.
Q # 2) Hvad er en markør og typen af markør?
Svar: Når en SQL-sætning er udført, bygger Oracle-databasen en hukommelse kaldet kontekstområde, som er et midlertidigt arbejdsområde. Der er to kategorier af markører - Implicit markør og Eksplicit markør.
Spørgsmål nr. 3) Hvordan kører jeg en markør i Oracle?
Svar: For at køre en markør i Oracle er syntaksen: ÅBEN<> . CURSORNAME refererer til navnet på markøren, der er tilgængelig i erklæringsafsnittet i PL / SQL-kodeblokken.
Q # 4) Kan vi erklære, at markøren inden begynder?
Svar: Ja, vi kan erklære mere end en markør inden for en PL / SQL-blok af kode.
Spørgsmål nr. 5) Hvordan finder du længden af en streng i PL / SQL?
Svar: Vi kan finde længden af en streng i PL / SQL ved hjælp af funktion LENGTH (str). Her er str den streng, som vi ønsker at få længden for. Denne funktion returnerer en numerisk værdi.
Q # 6) Hvad er SUBSTR i Oracle?
Svar: SUBSTR-funktionen giver et bestemt antal tegn fra en bestemt strengposition. Syntaksen er SUBSTR (n, start, l). Det returnerer en understreng fra strengen n, der starter fra den position, der er nævnt i starten. Parameteren l er valgfri og repræsenterer længden af underlaget.
Konklusion
I denne vejledning har vi detaljeret diskuteret nogle af de grundlæggende begreber i PL / SQL.
Vi har dækket nedenstående emner:
- PL SQL Cursor: Implicit Cursor og Explicit Cursor
- PL / SQL-strenge.
- Funktioner og operatører i streng.
<< PREV Tutorial | NÆSTE vejledning >>
Anbefalet læsning
- PL SQL-vejledning til begyndere med eksempler Hvad er PL / SQL
- Java Array Length Tutorial med kodeeksempler
- C # Exception Handling Tutorial med kodeeksempler
- Java 'dette' Nøgleord: Vejledning med kodeeksempler
- Python DateTime-tutorial med eksempler
- Brug af markør i MongoDB med eksempler
- C # Funktioner / Metoder Vejledning med kodeeksempler
- MySQL Opret visningsvejledning med kodeeksempler