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

ký hiệu @ trong thủ tục được lưu trữ?

@variable cú pháp trong MySQL biểu thị một biến phiên do người dùng xác định. Bạn có thể đặt các biến người dùng này bên ngoài một thủ tục được lưu trữ, nhưng bạn cũng có thể đặt chúng bên trong một thủ tục được lưu trữ và tác động là biến đó vẫn giữ giá trị sau khi lệnh gọi thủ tục của bạn trả về.

Vì vậy, trong ví dụ của bạn, phần sau cũng sẽ làm điều tương tự:

CREATE PROCEDURE emp_count_2()
BEGIN
 SELECT COUNT(*) INTO @empCount FROM Employee;
END

CALL emp_count_2(); /* sets @empCount as a side-effect */
SELECT @empCount;

Việc đặt đồng thời biến người dùng theo cách này có thể xảy ra nhiều phiên vì các biến người dùng được đặt trong phạm vi một phiên duy nhất và các phiên đồng thời có thể có các biến cùng tên, nhưng có các giá trị khác nhau.

Cú pháp biến không có tiền tố @ dành cho các biến cục bộ của thủ tục, tham số thủ tục hoặc các biến cục bộ khác được khai báo bằng KHAI THÁC trong phần thân thủ tục.

Cách sử dụng này mà bạn có, chuyển một biến người dùng làm tham số và gán nó trong phần thân của thủ tục, rất hữu ích nếu bạn muốn gọi một thủ tục nhiều lần và lưu trữ kết quả trong các biến người dùng riêng biệt. Nếu không, mỗi lệnh gọi đến thủ tục sẽ ghi đè giá trị trước đó trong biến người dùng @empCount cho phiên hiện tạ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. Phòng ngừa tốt từ tiêm MYSQL?

  2. Mysql CHỌN bên trong CẬP NHẬT

  3. Cách làm cho các bảng MySQL được lập chỉ mục tốt tham gia một cách hiệu quả

  4. Tải dữ liệu trong tệp giá trị mặc định không chèn trong bảng

  5. Đếm số lượng truy vấn được thực hiện