pl sql cursor strings
In deze tutorial zullen we leren wat een PL SQL-cursor is en verwante concepten zoals impliciete en expliciete cursors, cursor voor lus, enz. We zullen ook leren over String-functies in PL / SQL:
In de PL SQL-verzamelingen tutorial van de PL / SQL-reeks hebben we met behulp van codevoorbeelden geleerd over verzamelingsmethoden, varray, geneste tabel en associatieve array.
In dit artikel zullen we de verschillende soorten cursors onderzoeken die PL / SQL heeft. We zullen ook de implementatie zien van verschillende soorten cursors met codevoorbeelden.
We zullen ook strings bespreken en enkele van de ingebouwde stringfuncties die beschikbaar zijn in PL / SQL.
beste dvd-ripper voor Windows 7
Wat je leert:
PL SQL Cursor
Oracle heeft speciale geheugenlocaties voor het uitvoeren van SQL-instructies en bevat vervolgens die verwerkte informatie, bijvoorbeeld , het totale aantal bijgewerkte rijen.
Een cursor in PL / SQL geeft een naam en fungeert als een pointer naar het werkgebied dat een contextgebied wordt genoemd en gebruikt vervolgens de informatie ervan. Het houdt het aantal rijen bij dat door de SQL-instructie wordt verwerkt. Deze rijen worden genoemd als een actieve set. De grootte van de actieve set is gelijk aan het aantal rijen dat aan de voorwaarde voldoet.
Er zijn twee soorten cursors die hieronder worden vermeld:
- Impliciete cursor
- Expliciete cursor
Impliciete cursors
De impliciete cursors worden standaard door Oracle toegewezen tijdens het uitvoeren van SQL-instructies. Het bevat de betrokken rijen door de DML-bewerkingen zoals UPDATE, DELETE en INSERT. Dus impliciete cursors worden gebruikt als we geen expliciete cursor hebben.
Terwijl we een rij invoegen, behoudt de cursor die specifieke gegevens. Evenzo worden voor verwijderings- en update-bewerkingen de betrokken rijen opgeslagen door de cursors. De impliciete cursors krijgen geen namen en kunnen daarom niet worden gemanipuleerd door de ontwikkelaars en de gegevens erop kunnen nergens worden gebruikt.
De laatst bijgewerkte cursors kunnen worden gebruikt met behulp van cursorattributen. Deze attributen zijn de eigenschappen die helpen om naar het gegevenstype en de structuur van items te verwijzen zonder hun definities te herhalen. Alle kolommen en tabellen in een database hebben een gemeenschappelijk attribuut (vertegenwoordigd door% -teken) en kunnen worden gebruikt als sql% attribute_name.
Sl nr. | Naam | Doeleinden |
---|---|---|
7 | LENGTE (m) | Retourneert het aantal tekens in tekenreeks m. |
1 | % GEVONDEN | Geeft het resultaat in boolean. Geeft true terug als DELETE-, INSERT-, UPDATE- of SELECT-instructies van invloed zijn op enkele of meerdere rijen. Of anders wordt false geretourneerd. |
twee | %NIET GEVONDEN | Geeft het resultaat in boolean en heeft een omgekeerde functionaliteit van% FOUND. Geeft true terug als DELETE-, INSERT-, UPDATE- of SELECT-instructies geen invloed hebben op rijen. Of anders wordt false geretourneerd. |
3 | %IS GEOPEND | Geeft het resultaat in boolean. Geeft true terug als de cursor momenteel open is. Of anders wordt false geretourneerd. |
4 | %AANTAL RIJEN | Geeft het aantal rijen dat is opgehaald uit de DELETE-, INSERT-, UPDATE- of SELECT-instructies. |
5 | %TYPE | Geeft het datatype van de kolom of variabele van de database. |
6 | % ROWTYPE | Geeft het recordtype weer dat overeenkomt met een databaserij. |
Laten we eens kijken naar een tabel die TUTOR heet.
We hebben een tabel gemaakt met de onderstaande SQL-instructie:
Waarden ingevoegd in deze tabel met onderstaande SQL-instructies:
Code-implementatie met de impliciete cursor:
De uitvoer van de bovenstaande code zou moeten zijn:
Laten we nu de wijzigingen verifiëren die worden weergegeven in de tabel met de naam TUTOR.
We gebruiken een SQL-instructie om de kolommen van de tabel op te halen:
We zien dus dat, zoals aangegeven door de cursor, de naam van de leraar met code = 1 wordt bijgewerkt naar Zen.
Expliciete cursors
De ontwikkelaars kunnen hun eigen door de gebruiker gedefinieerde contextgebied hebben om DML-bewerkingen uit te voeren. Zo kunnen ze er meer macht over uitoefenen. Het declaratiegedeelte van het PL / SQL-codeblok bevat expliciete cursors. Het is normaal gesproken gebaseerd op SELECT-bewerkingen die meerdere rijen ophalen.
Syntaxis van expliciete cursor:
Expliciete Cursor werkt op de onderstaande processen:
# 1) Cursor declaratie voor geheugeninitialisatie. Hier wordt een benoemd contextgebied gemaakt dat dient als een cursornaam.
Syntaxis:
#twee) Cursor openen voor geheugentoewijzing Er is nu een cursor beschikbaar om de bijgewerkte rijen uit de database op te halen.
Syntaxis:
# 3) Cursor wordt opgehaald om de gegevens op te halen. Nadat de SELECT-bewerking is voltooid, worden de verkregen rijen in het toegewezen geheugen geplaatst en worden deze nu als actieve sets beschouwd. De cursor heeft toegang tot één rij tegelijk.
Syntaxis:
# 4) Cursor is eindelijk gesloten om het toegewezen geheugen vrij te maken. Aangezien alle records een voor een worden opgehaald, wordt de cursor gesloten om het contextgebiedgeheugen vrij te geven.
Syntaxis:
Code-implementatie met expliciete cursor:
De uitvoer van de bovenstaande code zou moeten zijn:
Cursor voor lus
Terwijl we met expliciete cursors werken, kunnen we FOR-lus gebruiken in plaats van statements als FETCH, OPEN en CLOSE te gebruiken. Cursor FOR Loop heeft de lusindex als een record dat verwijst naar de rij die is verkregen uit de database. Na het openen van de cursor haalt het vervolgens de meerdere rijen met gegevens herhaaldelijk op uit de resultatenset in de recordvelden.
Ten slotte wordt de cursor gesloten nadat alle rijen zijn verkregen. We gebruiken een punt (.) Teken om naar elk veld in het record te verwijzen. (.) puntteken wordt feitelijk gebruikt voor het selecteren van een component.
De syntaxis voor Cursor For-lus:
Hier verklaart de Cursor FOR-lus ‘ Tutorial_rec ’ als een record.
Variabelen cursor
Een cursorvariabele wordt gebruikt om te verwijzen naar de huidige rij in de resultatenset die meer dan één rij heeft. Het kan voor elk type zoekopdracht worden gebruikt. Het is vergelijkbaar met een variabele van PL / SQL, waar we waarden aan kunnen toewijzen en via een subprogramma in de database kunnen worden doorgegeven. Cursorvariabelen bieden dus veel flexibiliteit en gegevens kunnen in een gecentraliseerd proces worden verkregen.
PL SQL-strings
De strings in PL / SQL zijn een groep tekens in een bepaalde volgorde. De maat van de string is mogelijk niet beschikbaar. De tekens die deel kunnen uitmaken van een string kunnen een speciaal teken, spaties, cijfers en alfanumeriek zijn. Het is dus een set gekozen symbolen uit een groep karakters.
Er zijn drie categorieën strings in PL / SQL. Deze staan hieronder vermeld:
- String met variabele lengte: De lengte van de string mag niet langer zijn dan 32.767 en er mag geen opvulling in de string zitten.
- String met vaste lengte : De lengte van de string wordt vermeld in de stringverklaring. De string is rechts opgevuld met spaties om plaats te bieden aan de opgegeven lengte van de string.
- Character Large Objects (CLOB): Dit is een string van variabele lengte met een grootte tot 128 TB.
De strings in PL / SQL kunnen zowel letterlijke als variabelen zijn. Aanhalingstekens worden gebruikt voor letterlijke termen.
Syntaxis:
We hebben ook de mogelijkheid om een aanhalingsteken toe te voegen binnen onze letterlijke tekenreeks. Dit wordt bereikt door twee opeenvolgende enkele aanhalingstekens te behouden.
Syntaxis:
We kunnen door de gebruiker gedefinieerde scheidingstekens voor letterlijke tekenreeksen beschrijven door deze vooraf te laten gaan met een ‘q’ -letter.
Syntaxis:
Verklaring van tekenreeksvariabelen
Er zijn meerdere gegevenstypen in PL / SQL, zoals NCHAR, CHAR, VARCHAR, VARCHAR2, CLOB en NCLOB. De gegevenstypen van de nationale tekenset worden voorafgegaan door N. Ze worden gebruikt voor het opslaan van Unicode-tekens.
In een string met variabele lengte moet de maximale limiet van de stringlengte worden vermeld.
Syntaxis:
Dit betekent dat het variabele onderwerp maximaal 10 tekens kan bevatten en niet meer dan dat. In het geval dat de maximale lengte wordt weggelaten, wordt een compileerfout gegenereerd.
In een tekenreeks met een vaste lengte kan het gegevenstype CHAR worden gebruikt. Het is niet nodig om de maximale lengte van een string met een vaste lengte te definiëren. Als de limiet wordt weggelaten, neemt Oracle de standaardwaarde van 1.
Syntaxis:
Als u een CHAR-variabele declareert met een lengte groter dan 1, vult Oracle standaard de waarde die we hebben opgeslagen in die variabele met spaties. Dit wordt gedaan totdat de opgegeven maximale lengte is bereikt.
Om een declaratie te maken voor een karakter groot object, wordt CLOB gebruikt. De maximale lengte hoeft hier niet te worden vermeld en de lengte wordt bepaald door de Oracle-database zelf en is afhankelijk van de grootte van het databaseblok.
Syntaxis:
Richtlijnen voor het kiezen van gegevenstypen in PL / SQL:
- Als we te maken hebben met waarden die altijd een vaste lengte hebben, bijvoorbeeld, het mobiele telefoonnummer dat een constante lengte en indeling heeft, moeten we het gegevenstype CHAR of NCHAR gebruiken.
- Anders moeten we het datatype VARCHAR2 of NVARCHAR2 gebruiken.
- Als we te maken hebben met een tekenreeks met meer dan 32.767 tekens, moeten we het gegevenstype CLOB of NCLOB gebruiken.
Code implementatie met strings:
De uitvoer van de bovenstaande code zou moeten zijn:
PL / SQL-functies en operatoren in string
Sl nr. | Naam | Doeleinden |
---|---|---|
1 | CONCAT (i, j) | Voegt de strings i en j toe en retourneert de nieuwe string. |
twee | ASCII(n) | Retourneert de equivalente ASCII-waarde van n. |
3 | CHR (n) | Retourneert het teken samen met de equivalente ASCII-waarde van n. |
4 | INSTR (i, x, start, n) | Vindt de deelstring i in de tekenreeks x en retourneert vervolgens de positie van voorkomen. De start verwijst naar de beginpositie van het zoeken en is een optionele parameter. De n is het n-de voorkomen van de string en is ook een optionele parameter. |
5 | INSTRB (i) | Retourneert de positie van een subtekenreeks in een tekenreeks in bytes. |
6 | INITCAP (k) | Converteert het eerste teken van afzonderlijke woorden in tekenreeks k naar hoofdletters en geeft vervolgens de tekenreeks terug. |
8 | LENGTEB (n) | Retourneert het aantal tekens in tekenreeks m in bytes voor tekenset van één byte. |
9 | LTRIM (n, x) | Verwijdert x tekens links van tekenreeks n. De x is een optionele parameter als deze niet is opgegeven, verwijdert alle voorloopspaties van de tekenreeks n. |
10 | RTRIM (n, x) | Verwijdert x tekens rechts van tekenreeks n. De x is een optionele parameter als deze niet is opgegeven, verwijdert alle volgspaties van de tekenreeks n. |
elf | TRIM ((trim_char FROM) x); | Verwijdert spaties of genoemde karakters vanaf het begin, einde of beide uiteinden van de string x. |
12 | LAGER (i) | Converteert de tekens van tekenreeks i naar kleine letters en retourneert vervolgens de tekenreeks. |
13 | BOVENSTE (i) | Converteert de tekens van tekenreeks i naar hoofdletters en retourneert vervolgens de tekenreeks. |
14 | LPAD (i, l, x) | Pads string x naar links om de string i lengte tot l te maken. De parameter x is optioneel als weggelaten spaties links van string i worden opgevuld. |
vijftien | RPAD (ik, l, x) | Pads string x naar rechts om de string i lengte tot l te maken. De parameter x is optioneel als weggelaten spaties rechts van string i worden opgevuld. |
16 | NANVL (n, val) | Retourneert val als n gelijk is aan de NaN-waarde, anders wordt n geretourneerd. |
17 | NLSSORT (i) | Wijzigt de sorteermethode van tekens. Het moet vóór elke NLS-functie worden vermeld, anders wordt de standaardsortering uitgevoerd. |
18 | NLS_INITCAP (i) | Vergelijkbaar in functionaliteit als functie INITCAP, maar er kan een ander soort techniek voor nodig zijn zoals vermeld in functie NLSSORT. |
19 | NLS_LOWER (m) | Vergelijkbaar in functionaliteit als functie LAGER, maar er kan een ander soort techniek voor nodig zijn zoals vermeld in functie NLSSORT. |
twintig | NLS_UPPER (m) | Vergelijkbaar in functionaliteit als functie UPPER, maar er kan een ander soort techniek voor nodig zijn zoals vermeld in functie NLSSORT. |
eenentwintig | NVL (n, val) | Geeft val terug als x gelijk is aan de waarde NULL, anders wordt n geretourneerd. |
22 | NVL2 (n, val, val2) | Retourneert val als x niet gelijk is aan de NULL-waarde, anders wordt val2 geretourneerd als x gelijk is aan NULL. |
2. 3 | SOUNDEX (i) | Retourneert een tekenreeks met de vocale weergave van i. |
24 | SUBSTR (n, start, l) | Retourneert een subtekenreeks van tekenreeks n die begint vanaf de positie die wordt genoemd in begin. De parameter l is optioneel en vertegenwoordigt de lengte van de subtekenreeks. |
25 | ONDERGROND (n) | Gelijk in functionaliteit als functie SUBSTR maar parameters zijn in bytes en niet in karakters voor een enkel byte karakter systeem. |
26 | VERVANG (n, s, r) | Vervangt het voorkomen van s door de string r met in de string n. |
Code-implementatie met enkele stringfuncties:
De uitvoer van de bovenstaande code zou moeten zijn:
wat is de analysefase in de sdlc?
Toelichting op bovenstaande code:
- De eerste output is HULP BIJ HET TESTEN VAN SOFTWARE !. Retourneert de invoertekenreeks ‘Software testing help!’ in hoofdletters met behulp van UPPER-functie.
- De tweede output is software testen helpen !. Retourneert de invoertekenreeks HULP BIJ HET TESTEN VAN SOFTWARE! in kleine letters met behulp van de LAGERE functie.
- De derde output 2. 3 Retourneert de lengte van de invoertekenreeks met behulp van de LENGTE-functie.
- De vierde output is Help bij het testen van software !. Retourneert het eerste teken van elk woord van de invoertekenreeks in hoofdletters met behulp van de INITCAP-functie
- De vijfde output is softwar. Retourneert een subtekenreeks van de invoerstring van de eerste positie naar een lengte van 8 inclusief een spatie met behulp van SUBSTR-functie
- De zesde output is 6. Retourneert de positie van in in de invoerstring met behulp van de INSTR-functie
- De zevende output is software testoplossing !. Retourneert een nieuwe tekenreeks door te vervangen helpen met oplossing in de invoerstring met behulp van de REPLACE functie
- De achtste output is software testen helpen. Retourneert een nieuwe tekenreeks door het teken bij te snijden vanaf de rechterkant van de invoerstring met behulp van RTRIM-functie
- De negende output is software testen helpen !. Retourneert een nieuwe tekenreeks door de voorloop- en volgspaties van de invoerstring bij te snijden met behulp van de TRIM-functie
Veelgestelde vragen en antwoorden
V # 1) Wat is cursor in PL / SQL?
Antwoord: Nadat een SQL-instructie is uitgevoerd, bouwt de Oracle-database een geheugen op dat contextgebied wordt genoemd. Een cursor heeft de informatie verwerkt van een select-instructie en bevat de rijen die zijn bijgewerkt door die SELECT-bewerking.
V # 2) Wat is een cursor en een soort cursor?
Antwoord: Nadat een SQL-instructie is uitgevoerd, bouwt de Oracle-database een geheugen op dat contextgebied wordt genoemd en dat een tijdelijk werkgebied is. Er zijn twee categorieën cursors: impliciete cursor en expliciete cursor.
V # 3) Hoe voer ik een cursor uit in Oracle?
Antwoord: Om een cursor in Oracle uit te voeren, is de syntaxis: OPEN<> De CURSORNAME verwijst naar de naam van de cursor die beschikbaar is in het declaratiegedeelte van het PL / SQL-codeblok.
V # 4) Kunnen we de cursor binnen beginnen verklaren?
Antwoord: Ja, we kunnen meer dan één cursor binnen een PL / SQL-codeblok declareren.
V # 5) Hoe vind je de lengte van een string in PL / SQL?
Antwoord: We kunnen de lengte van een string in PL / SQL vinden met behulp van de functie LENGTH (str). Hier is str de tekenreeks waarvan we de lengte willen krijgen. Deze functie retourneert een numerieke waarde.
V # 6) Wat is SUBSTR in Oracle?
Antwoord: De SUBSTR-functie geeft een bepaald aantal tekens vanaf een specifieke positie van een string. De syntaxis is SUBSTR (n, start, l). Het retourneert een substring van de string n die begint vanaf de positie die wordt genoemd in start. De parameter l is optioneel en vertegenwoordigt de lengte van de subtekenreeks.
Gevolgtrekking
In deze tutorial hebben we enkele basisconcepten van PL / SQL in detail besproken.
We hebben de volgende onderwerpen behandeld:
- PL SQL Cursor: impliciete cursor en expliciete cursor
- PL / SQL-strings.
- Functies en operators in String.
<< PREV Tutorial VOLGENDE Tutorial >>
Aanbevolen literatuur
- PL SQL-zelfstudie voor beginners met voorbeelden | Wat is PL / SQL
- Zelfstudie over Java-array-lengte met codevoorbeelden
- C # Tutorial voor het afhandelen van uitzonderingen met codevoorbeelden
- Java 'dit' trefwoord: zelfstudie met codevoorbeelden
- Python DateTime-zelfstudie met voorbeelden
- Gebruik van Cursor in MongoDB met voorbeelden
- C # Functies / methoden Tutorial met codevoorbeelden
- MySQL Create Bekijk zelfstudie met codevoorbeelden