Løst: pl sql accept

Sidste ændring: 09/13/2023

Oracle PL / SQL er et dynamisk, robust programmeringssprog, der tilbyder moderne funktioner til at udvikle effektive, glatte applikationer. Ofte sammenlignet med Microsofts T-SQL, tilføjer PL/SQL procedurer og funktioner til standard SQL-forbedrende databaseapplikationers muligheder. På grund af dets transaktionsbehandlingsstyrke er det et ideelt valg til at køre komplekse beregninger og tunge datamanipulationer.

Oversigt over PL/SQL

PL/SQL er en proceduremæssig udvidelse af SQL, som skaber et naturligt, effektivt og sikkert programmeringsmiljø. Det understøtter fuldt ud SQL-datamanipulation og forbedrer det ved at tillade gemte procedurer og funktioner, bedre fejlhåndtering og robuste standarder, der ikke typisk er tilgængelige i SQL.

PL/SQL er blok struktureret, og hver anonym blok eller underprogram har en valgfri deklarationssektion, hvor alle variabler, markører, brugerdefinerede undtagelser og underprogrammer er erklæret. Ydermere understøtter PL/SQL, som er et proceduresprog, iteration, betinget forgrening og tillader genbrug via brugerdefinerede underprogrammer.

Løsning af et problem med PL/SQL

Her vil vi skrive en PL/SQL-blok, der løser et almindeligt problem: at hente information fra databasetabeller med mulige undtagelser.

Først skal vi erklære variablerne for at holde de data, der hentes fra databasen. I PL/SQL erklærer vi variable i deklarationssektionen af ​​en blok.

DECLARE
  l_name    employees.last_name%TYPE;
  l_salary  employees.salary%TYPE;
  l_emp_id  employees.employee_id%TYPE := &Emp_Id;
BEGIN
...

Hovedhandlingen sker i udførelsessektionen:

...
BEGIN
  SELECT last_name, salary
    INTO l_name, l_salary
    FROM employees
   WHERE employee_id = l_emp_id;
   
  DBMS_OUTPUT.PUT_LINE('Name: ' || l_name);
  DBMS_OUTPUT.PUT_LINE('Salary: ' || l_salary);
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('No employee found with ID: ' || l_emp_id);
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('Error occurred: ' || SQLCODE || ' - ' || SQLERRM);
END;

Vigtigheden af ​​fejlhåndtering

Effektiv fejlhåndtering i PL/SQL-applikationer kan bidrage væsentligt til at reducere fejlretningstiden og forbedre applikationens robusthed.

I scriptet ovenfor har vi håndteret muligheden for en undtagelse (en fejl). Hvis det angivne medarbejder-id ikke eksisterer – SELECT INTO-sætningen rejser en NO_DATA_FOUND-undtagelse. Hvis en anden undtagelse bliver rejst, fanger OTHERS-handleren den.

Denne form for undtagelse håndtering er et glimrende eksempel på PL/SQL's robusthed og evne til at styre applikationens kontrolflow.

PL/SQL biblioteker og pakker

PL/SQL tillader brug af foruddefinerede SQL-pakker, der hjælper med at løse almindelige problemer. For eksempel DBMS_OUTPUT pakke blev brugt i det foregående eksempel til at udlæse dataene til konsollen.

Der er mange flere lignende pakker som DBMS_SQL (dynamisk SQL), UTL_FILE (håndtering af filer på serversiden), UTL_MAIL (afsendelse af e-mails fra PL/SQL) osv. Disse pakker, kombineret med de stærke proceduremæssige sprogfunktioner i PL/SQL, tilbyder robuste muligheder for at udvikle kraftfulde databaseapplikationer.

Fordele ved PL/SQL

Nogle af de vigtigste fordele ved PL/SQL inkluderer dets understøttelse af SQL, dets portabilitet, sikkerhed og fremragende ydeevne. På grund af den tætte integration med SQL kan du bruge alle SQL datatyper og alle SQL funktioner og operatorer.

Det øger produktiviteten ved at levere avancerede funktioner såsom undtagelseshåndtering, indkapsling, dataskjul og nedarvning. PL/SQL understøtter også markører, som kaldes hukommelsesområder til at manipulere komplekse SQL-forespørgslers output.

Med PL/SQL kan du beskytte dine data mod uautoriserede brugere ved at implementere stærke sikkerhedspolitikker. Det har også understøttelse af både statisk og dynamisk SQL, hvilket øger dens kapacitet yderligere.

PL/SQL tilbyder også fremragende ydeevne ved at tillade bundtning af SQL-sætninger i en enkelt blok, der kan sendes til databaseserveren i et enkelt opkald. Dette reducerer netværkstrafikken og øger applikationens eksekveringshastighed.

Relaterede indlæg: