pl sql cursor strings
En aquest tutorial, aprendrem què és un cursor PL SQL i conceptes relacionats com cursors implícits i explícits, cursor per a bucle, etc. També aprendrem sobre les funcions de cadena a PL / SQL:
A la PL SQL Collections tutorial del Sèrie PL / SQL , hem après sobre Mètodes de col·lecció, Varray, taula imbricada i matriu associativa amb l'ajuda d'exemples de codi.
En aquest article, explorarem els diversos tipus de cursors que té PL / SQL. També veurem la implementació de diferents tipus de cursors amb exemples de codi.
A més, parlarem de les cadenes i algunes de les funcions de cadena incorporades disponibles a PL / SQL.
com provar seqüències de comandaments entre llocs
Què aprendreu:
Cursor PL SQL
Oracle té ubicacions de memòria dedicades per executar sentències SQL i, a continuació, conserva la informació processada, per exemple , el nombre total de files actualitzades.
Un cursor a PL / SQL dóna un nom i actua com a punter a l'àrea de treball anomenada àrea de context i després utilitza la seva informació. Manté el nombre de files processades per la sentència SQL. Aquestes files es diuen com a conjunt actiu. La mida del conjunt actiu és igual al recompte de les files que compleixen la condició.
Hi ha dos tipus de cursors que s’enumeren a continuació:
- Cursor implícit
- Cursor explícit
Cursors implícits
Oracle assigna els cursors implícits per defecte mentre executa sentències SQL. Conté les files afectades per les operacions DML com UPDATE, DELETE i INSERT. Per tant, s’utilitzen cursors implícits quan no tenim un cursor explícit al seu lloc.
Mentre inserim una fila, el cursor conserva aquestes dades concretes. De la mateixa manera, per a operacions de supressió i actualització, les files afectades són emmagatzemades pels cursors. Els cursors implícits no reben cap nom i, per tant, no poden ser manipulats pels desenvolupadors i les dades que hi contenen no es poden utilitzar enlloc.
Els darrers cursors actualitzats es poden utilitzar amb l'ajut d'atributs de cursor. Aquests atributs són les propietats que ajuden a referir-se al tipus de dades i a l'estructura dels ítems sense repetir les seves definicions. Totes les columnes i taules d'una base de dades tenen un atribut comú (representat per% sign) i es poden utilitzar com a sql% attribute_name.
Sl núm. | Nom | Propòsits |
---|---|---|
7 | LONGITUD (m) | Retorna el recompte del nombre de caràcters de la cadena m. |
1 | %TROBAT | Dóna el resultat en booleà. Retorna cert si les sentències DELETE, INSERT, UPDATE o SELECT afecten files individuals o múltiples. O bé es torna fals. |
2 | %NO TROBAT | Ofereix el resultat en booleà i té una funcionalitat inversa de% FOUND. Retorna cert si les sentències DELETE, INSERT, UPDATE o SELECT no afecten cap fila. O bé es torna fals. |
3 | % ISOPEN | Dóna el resultat en booleà. Retorna cert si el cursor està obert. O bé es torna fals. |
4 | % ROWCOUNT | Ofereix el recompte del nombre de files obtingudes a les instruccions DELETE, INSERT, UPDATE o SELECT. |
5 | % TIPUS | Proporciona el tipus de dades de la columna o variable de la base de dades. |
6 | % ROWTYPE | Ofereix el tipus de registre que equival a una fila de base de dades. |
Considerem una taula que es diu TUTOR.
SELECT * FROM TUTOR;
Hem creat una taula amb la sentència SQL que es mostra a continuació:
CREATE TABLE TUTOR( CODE INT NOT NULL, SUBJECT VARCHAR(15) NOT NULL, TEACHER VARCHAR(15), REVIEWS VARCHAR (10) NOT NULL, PRIMARY KEY (CODE) );
S'han inserit valors a aquesta taula amb les sentències SQL que es donen a continuació:
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');
Implementació de codi amb el cursor implícit:
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; /
La sortida del codi anterior hauria de ser:
Verifiquem ara els canvis reflectits a la taula anomenada TUTOR.
Estem utilitzant una sentència SQL per obtenir les columnes de la taula:
SELECT * FROM TUTOR;
Així veiem que, tal com indica el cursor, el nom del professor amb codi = 1 s’actualitza a Zen.
Cursors explícits
Els desenvolupadors poden tenir la seva pròpia àrea de context definida per l'usuari per executar operacions DML. Així, poden exercir-hi més poder. La secció de declaració del bloc de codi PL / SQL conté cursors explícits. Normalment es basa en operacions SELECT que obtenen diverses files.
Sintaxi del cursor explícit:
DECLARE CURSOR <> IS <> <> BEGIN OPEN <>; FETCH <> INTO ; . . CLOSE ; END;
El cursor explícit funciona en els processos que s’enumeren a continuació:
# 1) Declaració del cursor per a la inicialització de la memòria. Aquí es crea una àrea de context anomenada que serveix de nom de cursor.
Sintaxi:
CURSOR tutorial_s IS SELECT code FROM TUTORIAL;
# 2) Obertura del cursor per a l'assignació de memòria . Ara hi ha disponible un cursor per obtenir les files actualitzades de la base de dades.
Sintaxi:
OPEN tutorial_s;
# 3) S'obté el cursor per obtenir les dades. Un cop feta l'operació SELECT, les files obtingudes es posen a la memòria assignada i ara es consideren conjunts actius. El cursor pot accedir a una fila a la vegada.
Sintaxi:
FETCH tutorial_s INTO c_code;
# 4) El cursor finalment es tanca per alliberar la memòria assignada. Com que tots els registres s’obtenen un per un, el cursor es tanca per alliberar la memòria de l’àrea de context.
Sintaxi:
CLOSE tutorial_s;
Implementació de codi amb cursor explícit:
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; /
La sortida del codi anterior hauria de ser:
Cursor del bucle
Mentre treballem amb cursors explícits, podem utilitzar el bucle FOR en lloc d’utilitzar sentències com FETCH, OPEN i CLOSE. El cursor FOR Loop té l'índex de bucle com a registre que apunta a la fila obtinguda de la base de dades. Després d'obrir el cursor, recupera les diverses files de dades repetidament del conjunt de resultats als camps de registre.
Finalment, el cursor es tanca després d’obtenir totes les files. Utilitzem un signe de punt (.) Per referir-nos a cada camp del registre. (.) El signe de punt s'utilitza en realitat per seleccionar un component.
La sintaxi del cursor per al bucle:
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;
Aquí, el bucle Cursor FOR declara ' Tutorial_rec ' com a disc.
Cursor Variables
S'utilitza una variable de cursor per referir-se a la fila actual del conjunt de resultats que té més d'una fila. Es pot utilitzar per a qualsevol tipus de consulta. És similar a una variable de PL / SQL, on podem assignar valors i es pot passar mitjançant un subprograma a la base de dades. Per tant, les variables del cursor proporcionen molta flexibilitat i es poden obtenir dades en un procés centralitzat.
PL SQL Strings
Les cadenes de PL / SQL són un grup de caràcters en un ordre concret. La mida de la cadena pot estar o no disponible. Els caràcters que poden formar part d'una cadena poden ser un caràcter especial, espais en blanc, números i alfanumèrics. Per tant, és un conjunt de símbols escollits d'un grup de personatges.
Hi ha tres categories de cadenes a PL / SQL. A continuació es detallen:
- Cadena de longitud variable: La longitud de la corda no pot superar 32.767 i no hi pot haver cap farciment.
- Cadena de longitud fixa : La longitud de la cadena s'esmenta a la declaració de cadena. La cadena està encoixinada amb espais adequats per adaptar-se a la longitud especificada de la cadena.
- Objectes de caràcter gran (CLOB): Es tracta d’una cadena de longitud variable que té una mida de fins a 128 TB.
Les cadenes de PL / SQL poden ser literals o variables. Els símbols de pressupost s’utilitzen per als literals.
Sintaxi:
'This is Software Testing Help'
A més, tenim l’opció d’afegir un pressupost dins de la nostra cadena literal. Això s’aconsegueix mantenint dues cometes simples consecutives.
Sintaxi:
'We can''t go there'
Podem descriure els delimitadors definits per l'usuari per a cadenes literals prefixant-lo amb una lletra 'q'.
Sintaxi:
q'(We can't go there)'
Declaració de les variables de cadena
Hi ha diversos tipus de dades a PL / SQL com NCHAR, CHAR, VARCHAR, VARCHAR2, CLOB i NCLOB. Els tipus de dades del conjunt de caràcters nacionals tenen el prefix N. Es fan servir per emmagatzemar caràcters Unicode.
En una cadena de longitud variable, s’ha d’esmentar el límit màxim de la longitud de la cadena.
Sintaxi:
DECLARE subject varchar(10);
Això significa que el subjecte variable pot contenir fins a 10 caràcters i no més que això. En el cas que s'omet la longitud màxima, es produeix l'error de compilació.
En una cadena de longitud fixa, es pot utilitzar el tipus de dades CHAR. No cal definir la longitud màxima d'una cadena de longitud fixa. Si s'omet el límit, Oracle pren el valor per defecte d'1.
Sintaxi:
DECLARE subject char := 'P';
Si declareu una variable CHAR amb una longitud superior a 1, Oracle per defecte bloqueja el valor que hem emmagatzemat en aquesta variable amb espais. Això es fa fins que s'assoleix la longitud màxima especificada.
Per fer una declaració d'un objecte de caràcter gran, s'utilitza CLOB. No cal esmentar la longitud màxima aquí i la longitud la defineix la pròpia base de dades Oracle i depèn de la mida del bloc de base de dades.
Sintaxi:
DECLARE l CLOB;
Directrius per triar tipus de dades a PL / SQL:
- Si tractem de valors que sempre tenen una longitud fixa, per exemple, el número de telèfon mòbil que té una longitud i un format constants, hauríem d’utilitzar el tipus de dades CHAR o NCHAR.
- Altrament, hauríem d’utilitzar el tipus de dades VARCHAR2 o NVARCHAR2.
- Si tractem d’una cadena que té més de 32.767 caràcters, hauríem d’utilitzar el tipus de dades CLOB o NCLOB.
Implementació de codi amb cadenes:
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; /
La sortida del codi anterior hauria de ser:
Funcions i operadors PL / SQL en cadena
Sl núm. | Nom | Propòsits |
---|---|---|
1 | CONCAT (i, j) | Afegeix les cadenes i i i retorna la cadena nova. |
2 | ASCII (n) | Retorna el valor ASCII equivalent de n. |
3 | CHR (n) | Retorna el caràcter juntament amb el valor ASCII equivalent de n. |
4 | INSTR (i, x, start, n) | Cerca la subcadena i a la cadena x i, a continuació, retorna la posició d’ocurrència. L’inici fa referència a la posició inicial de cerca i és un paràmetre opcional. La n és la novena aparició de la cadena i també és un paràmetre opcional. |
5 | INSTRB (i) | Retorna la posició d'una subcadena en una cadena en bytes. |
6 | INITCAP (k) | Converteix el caràcter inicial de les paraules individuals de la cadena k en majúscules i després torna la cadena. |
8 | LONGITUD (n) | Retorna el recompte dels caràcters de la cadena m en bytes per al conjunt de caràcters d'un sol byte. |
9 | LTRIM (n, x) | Elimina x caràcters de l'esquerra de la cadena n. La x és un paràmetre opcional si no es proporciona, elimina tots els espais principals de la cadena n. |
10 | RTRIM (n, x) | Elimina x caràcters de la dreta de la cadena n. La x és un paràmetre opcional si no es proporciona, elimina tots els espais finals de la cadena n. |
11 | TRIM ((trim_char FROM) x); | Elimina els espais o els caràcters esmentats del principi, del final o dels dos extrems de la cadena x. |
12 | BAIX (i) | Converteix els caràcters de la cadena i en minúscula i després retorna la cadena. |
13 | MAJOR (i) | Converteix els caràcters de la cadena i en majúscules i després retorna la cadena. |
14 | LPAD (i, l, x) | Coixinets de la cadena x cap a l'esquerra per fer la corda i la longitud de l. El paràmetre x és opcional, si els espais omesos estan encoixinats a l'esquerra de la cadena i. |
15 | RPAD (i, l, x) | Coixinets de la cadena x cap a la dreta per fer que la cadena i sigui ll. El paràmetre x és opcional, si els espais omesos estan encoixinats a la dreta de la cadena i. |
16 | NANVL (n, val) | Retorna val si n és igual al valor NaN, en cas contrari es retorna n. |
17 | NLSSORT (i) | Modifica el mètode d'ordenació dels caràcters. S'ha d'esmentar abans de qualsevol funció NLS, en cas contrari es farà l'ordenació per defecte. |
18 | NLS_INITCAP (i) | Funcionalment similar a la funció INITCAP, però pot tenir un tipus diferent de tècnica tal com s’esmenta a la funció NLSSORT. |
19 | NLS_LOWER (m) | Funcionalment similar a la funció LOWER, però pot tenir un tipus diferent de tècnica tal com s’esmenta a la funció NLSSORT. |
20 | NLS_UPPER (m) | Semblant en funció com a funció SUPERIOR, però pot tenir un tipus de tècnica diferent, tal com s’esmenta a la funció NLSSORT. |
21 | NVL (n, val) | Retorna val si x és igual al valor NULL, en cas contrari es retorna n. |
22 | NVL2 (n, val, val2) | Retorna val si x no és igual al valor NULL, en cas contrari si x és igual a NULL, es torna val2. |
23 | SOUNDEX (i) | Retorna una cadena que té la representació vocal d'i. |
24 | SUBSTR (n, inici, l) | Retorna una subcadena de cadena n que comença des de la posició esmentada a l'inici. El paràmetre l és opcional i representa la longitud de la subcadena. |
25 | SUBSTRB (n) | La funcionalitat és similar a la funció SUBSTR, però els paràmetres estan en bytes i no en caràcters per a un sistema de caràcters d’un sol byte. |
26 | REPOSA (n, s, r) | Substitueix les ocurrències de s per la cadena r amb la cadena n. |
Implementació de codi amb algunes funcions de cadena:
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; /
La sortida del codi anterior hauria de ser:
com puc llegir un fitxer XML
Explicació del codi anterior:
- La primera sortida és AJUDA DE PROVES DE PROGRAMARI !. Retorna la cadena d'entrada 'Ajuda per a les proves de programari!' en majúscules amb l'ajuda de Funció SUPERIOR.
- La segona sortida és ajuda de proves de programari !. Retorna la cadena d'entrada AJUDA DE PROVES DE PROGRAMARI! en minúscula amb l'ajut de la funció INFERIOR.
- La tercera sortida 23 . Retorna la longitud de la cadena d'entrada amb l'ajut del fitxer Funció LONGITUD.
- La quarta sortida és Ajuda de proves de programari !. Retorna el primer caràcter de cada paraula de la cadena d'entrada en majúscules amb l'ajuda del fitxer Funció INITCAP .
- La cinquena sortida és programari. Retorna una subcadena de la cadena d'entrada des de la primera posició fins a una longitud de 8 inclòs un espai amb l'ajuda de Funció SUBSTR .
- La sisena sortida és 6. Retorna la posició de dins a la cadena d 'entrada amb l' ajuda del fitxer Funció INSTR .
- La setena sortida és solució de proves de programari !. Retorna una cadena nova substituint-la ajuda amb solució a la cadena d'entrada amb l'ajuda de REPLACE funció .
- La vuitena sortida és ajuda de proves de programari. Retorna una nova cadena retallant el caràcter ! des de la dreta de la cadena d'entrada amb l'ajuda de Funció RTRIM .
- La novena sortida és ajuda de proves de programari !. Retorna una nova cadena retallant els espais inicial i final de la cadena d'entrada amb l'ajuda del fitxer Funció TRIM .
Preguntes i respostes freqüents
P # 1) Què és el cursor a PL / SQL?
Resposta: Després d'executar una sentència SQL, la base de dades Oracle crea una memòria anomenada àrea de context. Un cursor té la informació processada a partir d'una sentència select i conté les files actualitzades per l'operació SELECT.
Q # 2) Què és un cursor i el tipus de cursor?
Resposta: Després d'executar una sentència SQL, la base de dades Oracle crea una memòria anomenada àrea de context que és una àrea de treball temporal. Hi ha dues categories de cursors: el cursor implícit i el cursor explícit.
P # 3) Com puc executar un cursor a Oracle?
Resposta: Per executar un cursor a Oracle, la sintaxi és: OBERT<> . El CURSORNAME fa referència al nom del cursor disponible a la secció de declaració del bloc de codi PL / SQL.
P # 4) Podem declarar que comença el cursor a l'interior?
Resposta: Sí, podem declarar més d'un cursor dins d'un bloc de codi PL / SQL.
P # 5) Com es troba la longitud d'una cadena a PL / SQL?
Resposta: Podem trobar la longitud d’una cadena a PL / SQL amb l’ajut de la funció LENGTH (str). Aquí str és la cadena per a la qual volem obtenir la longitud. Aquesta funció retorna un valor numèric.
P # 6) Què és SUBSTR a Oracle?
Resposta: La funció SUBSTR proporciona un nombre particular de caràcters des d'una posició específica d'una cadena. La sintaxi és SUBSTR (n, inici, l). Retorna una subcadena de la cadena n que comença des de la posició esmentada a l'inici. El paràmetre l és opcional i representa la longitud de la subcadena.
Conclusió
En aquest tutorial, hem analitzat amb detall alguns dels conceptes bàsics de PL / SQL.
A continuació, hem tractat els temes següents:
- Cursor PL SQL: cursor implícit i cursor explícit
- Cadenes PL / SQL.
- Funcions i operadors en cadena.
<< PREV Tutorial | NEXT Tutorial >>
Lectura recomanada
- Tutorial PL SQL per a principiants amb exemples | Què és PL / SQL
- Tutorial de longitud de matriu de Java amb exemples de codi
- Tutorial de maneig d'excepcions C # amb exemples de codi
- Paraula clau 'aquesta' de Java: tutorial amb exemples de codi
- Tutorial de Python DateTime amb exemples
- Ús del cursor a MongoDB amb exemples
- C # Funcions / Mètodes Tutorial amb exemples de codi
- Tutorial MySQL Create View amb exemples de codi