Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Thủ tục lưu trữ-Nhà phát triển SQL

Tại sao bạn lại chuyển toàn bộ các tham số khi tất cả những gì bạn cần là ID người cắm trại (và bạn không cần làm gì với phần còn lại của chúng)? Điều đó không có ý nghĩa ...

Đây là một tùy chọn cho biết cách thực hiện.

Bảng mẫu:

SQL> select * from charges;

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

SQL>

Thủ tục:

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.

Thử nghiệm:

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>

Mã bạn đã viết:

  • lỗi chính tả, lỗi chính tả, lỗi chính tả ... có phải không p_error hoặc p_erorr ?
  • if nên có end if
  • if không thể chứa select câu lệnh (bạn phải chọn giá trị riêng, sau đó sử dụng nó trong if )
  • where điều kiện là sai. Đừng bao giờ đặt tên các tham số giống như tên cột. Đây:where camperid = camperid bằng where 1 = 1 và bạn sẽ nhận được tất cả các hàng từ bảng, không chỉ hàng mà bạn đang tìm kiếm


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng `SELECT` để gọi một hàm

  2. Cần gỡ bỏ Oracle Favicon

  3. Dấu chấm than trong SQL (Oracle)

  4. Xác định kích thước của tập kết quả SQL tính bằng KB

  5. Các trường ánh xạ trong Oracle SQL Loader