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

Oracle [Thủ tục] - Hàm Sum bỏ qua mệnh đề WHERE

Vấn đề của bạn là tham số đầu vào của bạn có cùng tên với cột của bạn, vì vậy khi truy vấn thấy

WHERE SCOTT.EMP.DEPTNO = deptno

nó diễn giải deptno dưới dạng SCOTT.EMP.DEPTNO , nghĩa là nó đúng với tất cả các giá trị của deptno . Thay đổi tên của tham số đầu vào của bạn và truy vấn sẽ hoạt động như mong đợi.

Bạn cũng nên sử dụng NVL để đảm bảo rằng SUM riêng lẻ các giá trị không phải là NULL , như thể một trong số chúng là NULL điều đó sẽ làm cho tổng của chúng NULL cũng vậy, tức là

select NVL(SUM(SAL), 0) INTO SALSUM FROM SCOTT.EMP WHERE SCOTT.EMP.DEPTNO = numerdept;
select NVL(SUM(COMM), 0) INTO COMMSUM FROM SCOTT.EMP WHERE SCOTT.EMP.DEPTNO = numerdept;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate Dialect cho Oracle 19

  2. lỗi kích hoạt không hợp lệ

  3. Loại bỏ mật khẩu khi gọi sqlplus từ tập lệnh shell

  4. Tên người dùng và mật khẩu mặc định cho cơ sở dữ liệu Oracle

  5. Cách tìm THAM GIA LEFT OUTER hoặc RIGHT OUTER JOIN với ORACLE JOIN (+)