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

Gặp hai sự cố khi sử dụng thủ tục được lưu trữ trong MySQL

Đó là hạn chế.

Bây giờ, giải pháp thay thế: thêm BEGIN ... END lồng nhau khối.

DELIMITER $$
CREATE PROCEDURE ...
BEGIN
  DECLARE ... INT ... -- variable
  CREATE TEMPORARY TABLE... -- following the declarations, no more declarations allowed, unless...
  BEGIN -- resets the scope, changes the rules, allows more declarations
    DECLARE ... INT ... -- variables
    DECLARE ... CURSOR ...
    DECLARE CONTINUE HANDLER ...
    OPEN ...
    ...
  END;
END $$

Tất cả các biến trong khối bên ngoài vẫn nằm trong phạm vi trong khối bên trong, trừ khi một biến khác trong khối bên trong có tên xung đột.

HANDLER trong khối bên ngoài cũng nằm trong phạm vi cho các tín hiệu trong khối bên trong, trừ khi một trình xử lý xung đột được khai báo ở đó, trong trường hợp đó, trình xử lý bên trong sẽ bắt ngoại lệ và xử lý bên ngoài sẽ bắt bất cứ thứ gì do trình xử lý bên trong ném ra, bao gồm một RESIGNAL .

Nhiều cấp độ lồng nhau được cho phép. Kích thước của thread_stack có thể là một yếu tố, nhưng tài liệu không rõ ràng. Tôi đã chạy ngăn xếp luồng 262,144 byte kể từ trước khi nó được đặt làm mặc định và chưa bao giờ gặp phải giới hạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lấy và hiển thị hình ảnh BLOB từ cơ sở dữ liệu Mysql với Tkinter

  2. Làm cách nào để chỉ chọn các bản ghi được nhóm lại nếu mọi bản ghi trong một nhóm đáp ứng một tiêu chí nhất định trong MySQL?

  3. Dấu thời gian trong mysql có được lưu vào bộ nhớ đệm khi được truy xuất trong các múi giờ khác nhau không?

  4. sử dụng mysql SUM () trong mệnh đề WHERE

  5. Thêm ScrollPane vào bố cục lưới