Dagens PL/SQL-handledning handlar om Collection Method LIMIT. Vi har redan sett 4 funktioner i denna samlingsmetodserie som är – Count, Exists, First och Last. Limit är den femte funktionen som vi kommer att lära oss idag.
Vad är Collection Method LIMIT?
Samlingsmetod LIMIT som faktiskt är en PL/SQL-funktion returnerar det maximala antalet element som en VARRAY kan innehålla. Det betyder att du genom att använda den här funktionen kan ta reda på hur många element du kan lagra i en VARRAY.
Vad returnerar insamlingsmetoden LIMIT?
Insamlingsmetod LIMIT returnerar ett värde av typen PLS_INTEGER?
Fungerar den här funktionen även med andra två samlingar Nested Tables och Associative Array?
Insamlingsmetoden LIMIT fungerar endast med VARRAY. Om den tillämpas på kapslad tabell eller associativ array kommer den här funktionen antingen att returnera ett NULL- eller No-värde. Så svaret är, nej, insamlingsfunktionen LIMIT fungerar inte med kapslade tabeller och associativa arrayer.
Vad är specifikationen för insamlingsfunktionen LIMIT?
Specifikationen för insamlingsfunktionen LIMIT är:
FUNCTION LIMIT RETURN pls_integer;
Har insamlingsfunktionen LIMIT något undantag? Om ja, när då?
Ja, funktionen LIMIT ger undantag för COLLECTION_IS_NULL om den tillämpas på en oinitierad kapslad tabell eller en VARRAY.
Kan du visa oss ett exempel på hur man använder funktionen LIMIT?
Visst varför inte. Här är ett mycket enkelt exempel som visar hur man korrekt använder insamlingsfunktionen LIMIT med VARRAYs.
SET SERVEROUTPUT ON; DECLARE TYPE inBlock_vry IS VARRAY (5) OF NUMBER; vry_obj inBlock_vry := inBlock_vry(); BEGIN --Let's find out total number of indexes in the above VARRAY DBMS_OUTPUT.PUT_LINE ('Total Indexes '||vry_obj.LIMIT); END; /
Har vi inte funktionen COUNT som ger samma information?
Insamlingsfunktionen LIMIT returnerar det totala antalet index för en VARRAY oavsett om dessa index är tomma eller innehåller vissa data . Den kontrollerar definitionen av VARRAY och ser det totala antalet element som den är utformad för att lagra och returnerar det numret.
Medan samlingsfunktionen COUNT returnerar antalet index som är inte tomma och håller vissa data .
Ta en titt på detta PL/SQL-program. Detta hjälper dig att förstå skillnaden mellan insamlingsmetoden COUNT och LIMIT tydligare.
SET SERVEROUTPUT ON; DECLARE --Create VARRAY of 5 element TYPE inblock_vry IS VARRAY ( 5 ) OF NUMBER; vry_obj inblock_vry := inblock_vry (); BEGIN --Insert into VARRAY vry_obj.extend; vry_obj(1) := 10 * 2; dbms_output.put_line('Total Number of Index ' || vry_obj.limit); dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count); END; /
I ovanstående kod har vi en VARRAY som kan hålla 5 element av NUMBER datatyp. I exekveringsavsnittet har vi två DBMS-utdatasatser. Den första utgångssatsen som visar resultatet av LIMIT-funktionen kommer att returnera 5 eftersom det är den totala styrkan av vår VARRAY medan den andra utgångssatsen kommer att returnera 1 eftersom det bland dessa 5 indexen bara finns ett index som har en del data lagrad i sig.
Du sa i videon att du kommer att visa osshur man tar reda på det totala antalet element som inte används för att vi ska kunna lagra data i en varray med insamlingsmetoden LIMIT?
Är det så? Har jag sagt det? Jag skojar bara.
Att ta reda på antalet lediga index för din användning i en VARRAY är mycket enkelt. Låt mig berätta hur.
Som jag sa ovan returnerar samlingsfunktionen COUNT antalet index som har data lagrade i dem och samlingsfunktionen LIMIT returnerar det totala antalet index som en VARRAY kan ta emot.
Om du subtraherar resultatet av räknefunktionen från resultatet av funktionen LIMIT får du det totala antalet element som lämnas oanvända för dig att lagra data i en varray. Till exempel
DECLARE --Create VARRAY of 5 element TYPE inblock_vry IS VARRAY ( 5 ) OF NUMBER; vry_obj inblock_vry := inblock_vry (); BEGIN --Insert into VARRAY vry_obj.extend; vry_obj(1) := 10 * 2; dbms_output.put_line('Total Number of Index ' || vry_obj.limit); dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count); dbms_output.put_line('Total Number of Vacant index left for use ' || (vry_obj.limit - vry_obj.count) ); END; /
Det är PL/SQL-handledningen som svarar på alla frågor som du kan förvänta dig i certifieringsprovet såväl som i din intervju om insamlingsmetoden LIMIT i Oracle-databasen.
Finns det något som jag glömde att täcka eller nämna i denna handledning? Om ja, snälla låt mig. Skriv till mig på min Twitter eller Facebook.
Tack ha en bra dag.