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

lỗi phân giải tên hàm oracle pl / sql

Vấn đề là một trong những giải pháp tên.

Khi bạn có tham số hostnamehostname trong bảng mà bạn đang tham chiếu, các quy tắc phân giải phạm vi khiến hầu hết mọi người nhầm lẫn. Đó là lý do tại sao nhiều người khuyên bạn nên sử dụng quy ước đặt tên cho các tham số và biến cục bộ để phân biệt chúng với tên bảng. Ví dụ:trong mã của tôi, tôi sử dụng p_ thành tiền tố tên tham số và l_ để đặt tiền tố cho các biến cục bộ.

Trong mã của bạn, khi bạn có

SELECT mySystems.SYSTEMID
INTO SysID
FROM mySystems
where mySystems.HOSTNAME = Hostname;

hostname được giải quyết dưới dạng cột trong bảng, không phải tham số. Điều này khiến truy vấn trả về mọi hàng trong bảng có hostname không phải là null gây ra lỗi. Bạn có thể đặt tiền tố tên tham số một cách rõ ràng với tên hàm để buộc hostname để giải quyết tham số

SELECT mySystems.SYSTEMID
INTO SysID
FROM mySystems
where mySystems.HOSTNAME = GET_SYSTEMID.Hostname;

Điều đó hoạt động. Nhưng việc thêm tiền tố tên hàm thường gây khó chịu. Nếu bạn áp dụng quy ước về tiền tố tên tham số và tên biến cục bộ, bạn sẽ nhận được một cái gì đó giống như

FUNCTION GET_SYSTEMID(p_hostname varchar2)
RETURN NUMBER
IS
    l_sysID number;
BEGIN 
    SELECT mySystems.SYSTEMID
    INTO l_sysID
    FROM mySystems
    where mySystems.HOSTNAME = p_hostname;

    return l_sysID;
END GET_SYSTEMID;

Điều đó cũng hoạt động và có xu hướng (theo suy nghĩ của tôi) rõ ràng hơn việc thêm tiền tố tên hàm rõ ràng ở khắp nơi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - cách đếm kết hợp duy nhất của các cột

  2. làm thế nào để kích hoạt cập nhật giá trị hàng trong bảng bằng cách sử dụng giá trị hàng từ một bảng khác trong Apex Oracle SQL?

  3. Shell Script với sqlplus và các ký tự đặc biệt trên mật khẩu

  4. Cách hiển thị đầu ra sys_refcursor pl sql bằng công cụ Toad

  5. loại bỏ ký tự đặc biệt biểu thức chính quy