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

Gọi Hàm PL SQL Oracle từ Excel VBA

Công việc của bạn với ngày tháng là hoàn toàn không chính xác. Thật khó để chỉ ra địa điểm chính xác vì có một số địa điểm tiềm năng. Tôi sẽ giải thích điều gì sai với đoạn mã này (nó được lấy từ câu lệnh "dòng 89" của bạn):

... FP_BASIC_BD."DATE">=TO_CHAR(TRUNC(TO_DATE(GTT_DWM_STATS.CLOSINGDATE,'DD-MON-YY'), 'IW'),'DD-MON-YY') ...

GTT_DWM_STATS.CLOSINGDATE có định dạng ngày tháng (theo tuyên bố DDL của bạn). Nhưng to_date hàm nhận một chuỗi làm tham số đầu tiên. Tại nơi này, Oracle thực hiện những điều sau:

  • chuyển đổi ngầm định ngày thành chuỗi (sử dụng định dạng của phiên)
  • rồi đến to_date hàm cố gắng chuyển đổi nó trở lại thành một ngày tháng, coi chuỗi là một ngày tháng được viết bằng 'DD-MON-YY' định dạng
  • sau đó trunc cắt bớt ngày
  • sau đó to_char chuyển đổi lại nó thành một chuỗi và bạn so sánh chuỗi của mình với ngày (tôi đoán) FP_BASIC_BD."DATE"
  • if FP_BASIC_BD."DATE" là ngày tháng, Oracle chuyển đổi ngầm kết quả của biểu thức ở bên phải dấu bằng một lần nữa thành ngày tháng
  • hoặc nếu FP_BASIC_BD."DATE" là một chuỗi, Oracle so sánh các chuỗi theo quy tắc so sánh chuỗi.

Những gì bạn cần ở đây là loại bỏ tất cả các biến đổi không cần thiết:

FP_BASIC_BD."DATE" >= TRUNC(GTT_DWM_STATS.CLOSINGDATE, 'IW')

Và sau đó bạn phải kiểm tra cẩn thận tất cả các báo cáo khác mà bạn đang làm việc với ngày tháng. Nếu một hàm lấy một ngày làm tham số đầu vào, bạn phải chuyển một ngày tháng, nếu một hàm lấy một chuỗi - hãy truyền một chuỗi. Tương tự với phép so sánh:so sánh một chuỗi với một chuỗi và một ngày với một ngày.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách xuất khung dữ liệu (R) vào bảng Oracle

  2. Cách định cấu hình c3p0 ở chế độ ngủ đông để tự động làm mới các kết nối DB cũ

  3. Tạo nhiều hơn một thủ tục trong một tệp SQL?

  4. Làm thế nào để gói PL SQL Code trong Oracle?

  5. SQL Server:làm thế nào để bắt chước truy vấn oracle keep secure_rank?