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

Gọi một hàm Oracle qua Ajax cho mục đích xác thực tại chỗ trong Oracle APEX v4.2.2

Ajax + apex 4.2 = apex.server. quy trình api
Nó yêu cầu bạn có một quy trình tại điểm quy trình theo yêu cầu của trang hoặc quy trình đăng ký. Trong đó, bạn phải gọi hàm của mình và cung cấp các tham số, có thể là các mục của trang. Để cung cấp giá trị trả về, hãy ghi các giá trị vào bộ đệm http với các lệnh gọi tới htp.p .

DECLARE
  some_var1 VARCHAR2(50);
BEGIN
  some_var1 := my_package.my_function(:P1_EMPNO, :P1_DEPTNO);
  -- write values back
  htp.p(some_var1);
END;

Bạn có thể dễ dàng cung cấp apex.server.process với các mục trang. Việc xử lý thêm tất cả đều bằng javascript.
Lưu ý cảnh báo:dataType theo mặc định được đặt thành JSON, do đó nếu bạn không cung cấp kiểu dữ liệu mặc định nào khác và không trả về chuỗi json, bạn sẽ gặp lỗi phân tích cú pháp. Vì vậy, nếu bạn trả lại một văn bản trong quy trình theo yêu cầu của mình, chẳng hạn như INVALID, hãy đảm bảo đặt kiểu dữ liệu thành văn bản!

apex.server.process ( "MY_PROCESS", {
  pageItems: "#P1_DEPTNO,#P1_EMPNO"
  }, {
    dataType: "text"
  , success: function( pData ) { 
      //pData should contain VALID or INVALID - alert it
      alert(pData);
      if ( pData === 'INVALID' ) {
        // do something here when the result is invalid
        // maybe you want to color something red for example
        alert('The data you have entered is invalid');
      };
    }
  } );

Tôi sẽ không chia nhỏ điều này thành nhiều hành động năng động hơn mức cần thiết, mặc dù nó có thể là có thể. Cá nhân tôi không thích cố gắng sử dụng một hành động true động của khối PLSQL, chỉ vì hành động này sẽ khó thực hiện hơn nếu bạn muốn xử lý các giá trị trả về.
Chỉ cần đặt nút của bạn để không gửi trang mà là hành động được xác định bởi hành động động. Sau đó, trong hành động động, hãy tạo một hành động thực sự của loại thực thi javascript và sử dụng lệnh gọi ajax với (các) lệnh gọi lạ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. Sử dụng giá trị của một biến chuỗi trong vòng lặp SQL FOR-IN (SELECT)

  2. ORA-28000:lỗi tài khoản bị khóa thường xuyên xảy ra

  3. Điều gì có thể gây ra lỗi ORA-12519 không liên tục (TNS:không tìm thấy trình xử lý thích hợp)

  4. Tại sao bạn không thể sử dụng HOẶC hoặc VÀO với thao tác THAM GIA NGOÀI TRỜI?

  5. Chèn vào từ CTE