sql >> Database >  >> RDS >> Oracle

Verzamelmethode:Trimprocedure in Oracle Database

Welkom terug bij de laatste tutorial in de PL/SQL Collection-serie. De langste video-tutorialserie tot nu toe op het kanaal. In deze zelfstudie leren we over de laatste PL/SQL-verzamelingsprocedure, de TRIM-procedure in Oracle Database.

Wat is PL/SQL-verzamelmethode TRIM?

Verzamelmethode TRIM in Oracle db is een overbelaste procedure waarmee u een of meer elementen aan het einde van een verzameling kunt verwijderen.

Op hoeveel manieren kunnen we de verzamelmethode TRIM-procedure in Oracle Database aanroepen?

Aangezien de PL/SQL-verzamelmethode TRIM een overbelaste procedure is, kunnen we het dus op twee verschillende manieren noemen. Deze twee verschillende aanroepen van de TRIM-procedure zijn:

  1. TRIM:Trimprocedure zonder parameter.

Als we de TRIM-procedure zonder parameters gebruiken, wordt slechts één element aan het einde van de verzameling verwijderd.

  1. TRIM:Trimprocedure met één parameter.

TRIM-procedure die wordt aangeroepen door één argument door te geven, verwijdert het aantal elementen aan het einde van de verzameling zoals gespecificeerd door de parameter. Die parameter moet een geldig geheel getal zijn. Het mag ook niet groter zijn dan het maximale aantal elementen dat uw verzameling heeft.

Info:Trim-procedure geeft een foutmelding als er wordt geprobeerd de ruimte onder nul elementen in te korten.

Kunnen we de PL/SQL-verzamelmethode TRIM gebruiken met alle drie typen verzamelingen?

Helaas nee, dat kunnen we niet. Net als bij PL/SQL-verzamelingsprocedure EXTEND, kan procedure TRIM alleen worden gebruikt met verzameling geneste tabellen en VARRAY's. We kunnen het echter niet gebruiken met associatieve arrays.

Wat gebeurt er als we PL/SQL Collection Procedure TRIM gebruiken met een associatieve array?

Als de verzamelmethode Trim of Oracle Database-versies wordt gebruikt met een associatieve array, u krijgt een compileerfout .

Wat is de specificatie van Trim Procedure in Oracle Database?

De specificatie van incassoprocedure TRIM is:

PROCEDURE TRIM (n PLS_INTEGER:= 1);

Als n NULL is, zal trim niets doen.

Ik hoorde je zeggen in de video dat we ook een SUBSCRIPT_BEYOND_COUNT uitzondering kunnen krijgen?

Ja, de PL/SQL-verzamelmethode TRIM genereert de uitzondering SUBSCRIPT_BEYOND_COUNT. Als er een poging wordt gedaan om meer elementen bij te snijden dan er daadwerkelijk in de collectie aanwezig zijn.

Je vindt het voorbeeld van deze uitzondering die ik in de video verderop in deze blog heb gedemonstreerd. Als je de video wilt zien, dan is het hier. Zo niet, scroll dan gerust naar beneden.

Zijn er nog andere uitzonderingen in verband met de PL/SQL-verzamelingsmethode Trim waarvan we op de hoogte moeten zijn?

Ja, er is nog een uitzondering verbonden aan de TRIM-procedure en dat is de uitzondering COLLECTION_IS_NULL.

Telkens wanneer u de verzamelingsprocedure TRIM toepast op een niet-geïnitialiseerde geneste tabel of VARRAY, zal de compiler de uitzondering COLLECTION_IS_NULL genereren.

Kunnen we de TRIM- en DELETE-procedure samen gebruiken?

Nee, we kunnen de TRIM- en DELETE-procedure voor collecties niet samen gebruiken. Als je ze met elkaar gebruikt, krijg je onverwachte resultaten.

Denk aan een scenario waarin u een element aan het einde van een VARRAY-variabele hebt VERWIJDERD en daarna de TRIM-procedure daarop toepast. Kun je raden hoeveel elementen je hebt verwijderd? Je zou in de war kunnen raken door te geloven dat twee elementen zijn verwijderd, maar het feit is dat er slechts één is verwijderd. TRIM werkt op de tijdelijke aanduiding die is achtergelaten door de procedure VERWIJDEREN.

Om deze verwarrende en zenuwslopende resultaten te vermijden, raadt Oracle-databaseondersteuning ten zeerste aan om deze twee procedures uitsluitend voor een bepaalde verzameling te gebruiken.

Hoe zit het met de voorbeelden? Doen we ze in deze blog of niet?

Natuurlijk gaan we de voorbeelden in deze blog zeker doen. In feite stond ik op het punt u de demonstratie te laten zien van elk van de TRIM-aanroepen van de PL/SQL Collection-procedure die we hierboven noemden. Hier gaan we:

1. PL/SQL-verzamelingsprocedure TRIM zonder parameter.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj (i));
    END LOOP;
END;
/ 

2. Verzamelprocedure TRIM met parameter.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM (3);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

3. PL/SQL-verzamelingsprocedure TRIM SUBSCRIPT_BEYOND_COUNT uitzondering.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM(6);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

SUBSCRIPT_BEYOND_COUNT uitzondering treedt op wanneer we een argument doorgeven dat groter is dan het totale aantal elementen van de verzameling. In het bovenstaande voorbeeld is de verzameling die we gebruiken een Geneste tabel met de naam 'my_nestedTable' waarin 5 numerieke elementen zijn opgeslagen. In de procedure-aanroep hebben we de compiler echter opgedragen om 6 elementen te TRIMen, wat absoluut onmogelijk is, dus in dit geval roept de compiler de uitzondering SUBSCRIPT_BEYOND_COUNT op.

4. Verzamelprocedure TRIM met VARRAY.

SET SERVEROUTPUT ON;
DECLARE
 TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
 vry_obj inBlock_vry := inBlock_vry(1, 2, 3, 4, 5);
BEGIN
    --TRIM without parameter
    vry_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
    --TRIM with Parameter
    vry_obj.TRIM (2);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
END;
/

Dat is de tutorial waarin de concepten van de PL/SQL Collection Method TRIM-procedure in Oracle Database worden uitgelegd.

Ik hoop dat je het leuk vind. Neem contact met mij op via mijn Facebook-pagina voor meer updates en inzichten over Oracle Database-concepten. Bedankt &een fijne dag!


  1. Null-waarden vervangen door Unknown in Select-instructie in SQL Server - SQL Server / TSQL-zelfstudie, deel 111

  2. Oracle CASE kortsluiting werkt niet in groep door

  3. 2 manieren om een ​​lijst met gekoppelde servers in SQL Server te retourneren met behulp van T-SQL

  4. GET_FORMAT() Voorbeelden – MySQL