sql >> Database teknologi >  >> RDS >> Oracle

Stored Procedure-SQL-udvikler

Hvorfor ville du videregive hele bunken af ​​parametre, når alt hvad du behøver er et autocamper-id (og der ikke er noget du ville gøre med resten af ​​dem)? Det giver bare ikke mening ...

Her er en mulighed, der viser, hvordan du gør det.

Eksempeltabel:

SQL> select * from charges;

  CAMPERID CATEGORY   CHARGEDATE                 AMT
---------- ---------- ------------------- ----------
         1 Category 1 12.10.2021 00:00:00        500

SQL>

Fremgangsmåde:

SQL> create or replace procedure p_test
  2    (par_camperid   in charges.camperid%type,
  3     par_message   out varchar2
  4    )
  5  as
  6    l_camperid   charges.camperid%type;
  7  begin
  8    select c.camperid
  9      into l_camperid
 10      from charges c
 11      where c.camperid = par_camperid;
 12
 13    par_message := 'Camper ' || par_camperid || ' exists';
 14  exception
 15    when no_data_found then
 16      par_message := 'Error: no such camper ID (' || par_camperid || ')';
 17  end;
 18  /

Procedure created.

Test:

SQL> set serveroutput on;
SQL> declare
  2    l_msg varchar2(100);
  3  begin
  4    p_test(1, l_msg);
  5    dbms_output.put_line(l_msg);
  6  end;
  7  /
Camper 1 exists

PL/SQL procedure successfully completed.

SQL> declare
  2    l_msg varchar2(100);
  3  begin
  4    p_test(2, l_msg);
  5    dbms_output.put_line(l_msg);
  6  end;
  7  /
Error: no such camper ID (2)

PL/SQL procedure successfully completed.

SQL>

Kode du skrev:

  • tastfejl, stavefejl, stavefejl ... er det p_error eller p_erorr ?
  • if skal have end if
  • if kan ikke indeholde en select sætning (du skal vælge værdi separat og derefter bruge den i if )
  • where tilstanden er forkert. Navngiv aldrig parametre det samme som kolonnenavne. Dette:where camperid = camperid er lig med where 1 = 1 og du får alle rækker fra tabellen, ikke kun den, du leder efter


  1. Tjek, om laravel-modellen blev gemt, eller forespørgslen blev udført

  2. MySQL-indsættelse ved dubletopdatering til ikke-PRIMÆR nøgle

  3. drupal sql betingede klausuler for flere tabeller?

  4. Vælg tid mellem to gange mysql