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

Học các biến ràng buộc trong PL / SQL cùng với Đầu vào và Đầu ra Tính toán DBMS_OUTPUT.PUT_LINE

Biến ràng buộc biến thay thế là những thứ khác nhau, do đó, cách diễn đạt vấn đề dễ gây hiểu nhầm. Và đó chỉ là phiên bản SQL * Plus của các biến liên kết; nó có thể có ý nghĩa hơi khác (hoặc ít nhất là ít rõ ràng hơn) đối với trình phân tích cú pháp.

Chắc chắn bạn đang nhầm lẫn giữa các biến PL / SQL với các biến thay thế SQL * Plus. Khi bạn tham chiếu &d_length bạn đang xác định một biến thay thế và người dùng sẽ được nhắc nhập giá trị của nó tại thời điểm đó. Nhưng nó hoàn toàn độc lập với d_length trong PL / SQL DECLARE khối.

Bạn có thể xem CHẤP NHẬN lệnh cho một cách gọn gàng để nhận các giá trị từ người dùng trước khi bạn bắt đầu chặn, nhưng bạn cũng có thể làm như thế này:

SET SERVEROUTPUT ON
DECLARE
    d_length    NUMBER := &q_length;
    d_height    NUMBER := &q_height;
    d_width     NUMBER := &q_width;
    d_volume    NUMBER;
BEGIN
    DBMS_OUTPUT.PUT_LINE('The length dimension is: ' || d_length);
    DBMS_OUTPUT.PUT_LINE('The height dimension is: ' || d_height);
    DBMS_OUTPUT.PUT_LINE('The width dimension is: ' || d_width);  

    d_volume := d_length * d_height * d_width;

    DBMS_OUTPUT.PUT_LINE(
        'The rectangular prism volume for the swimming pool is: ' 
           || d_volume);

   DBMS_OUTPUT.PUT_LINE(
       'The dimensions of the swimming pool are ' || '?');
END;
/

Không chắc chắn những gì bạn muốn dòng đầu ra cuối cùng hiển thị; điều đó có khác với ba thứ nguyên đã được hiển thị không?

Bạn cũng có thể làm điều đó với các biến ràng buộc bằng cách xác định chúng bằng VARIABLE lệnh :

SET SERVEROUTPUT ON
VARIABLE d_length NUMBER;
VARIABLE d_height NUMBER;
VARIABLE d_width NUMBER;

DECLARE 
    d_volume    NUMBER;
BEGIN
    :d_length := &q_length;
    :d_height := &q_height;
    :d_width := &q_width;

    DBMS_OUTPUT.PUT_LINE('The length dimension is: ' || :d_length);
    DBMS_OUTPUT.PUT_LINE('The height dimension is: ' || :d_height);
    DBMS_OUTPUT.PUT_LINE('The width dimension is: ' || :d_width);  

    d_volume := :d_length * :d_height * :d_width;

    DBMS_OUTPUT.PUT_LINE(
        'The rectangular prism volume for the swimming pool is: ' 
           || d_volume);

   DBMS_OUTPUT.PUT_LINE(
       'The dimensions of the swimming pool are ' || '?');
END;
/

Lưu ý rằng d_length , d_height d_width được bắt đầu bằng dấu hai chấm trong phiên bản này, vì đó là các biến liên kết. Nhưng d_volume không phải vì điều đó vẫn được khai báo trong khối PL / SQL. Và các giá trị thực tế vẫn đang được lấy lại từ người dùng dưới dạng các biến thay thế. Tuy nhiên, điều này hơi phức tạp; khiến chúng thực sự không thêm bất cứ thứ gì vào đâ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. Khi nào hoặc Tại sao nên sử dụng ĐẶT ĐỊNH TẮT trong Cơ sở dữ liệu Oracle

  2. Ngày Oracle có vẻ bằng

  3. Lỗi Oracle tạo ra các giá trị tổng hợp trùng lặp trong JSON_ARRAYAGG

  4. Specifiy classpath dành cho maven

  5. Sự cố kết nối vb.net oracle không liên tục