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

Đối số lỗi thủ tục lưu trữ 1 cho quy trình ... không phải là biến hoặc biến giả MỚI trong kích hoạt TRƯỚC

Tôi nghĩ rằng vấn đề là do bạn gọi đến thủ tục.

Với các phiên bản của trình kết nối MySQL không hỗ trợ OUT tham số, cách giải quyết thông thường là sử dụng biến người dùng MySQL để giữ các giá trị trả về, sau đó chạy truy vấn để lấy giá trị của các biến đó.

Đầu tiên, thực thi thủ tục đã lưu trữ và yêu cầu MySQL đặt giá trị của các đối số OUT vào các biến:

CALL `Get_Next_Processing_Video`(@IDVideo, @YoutubeIDVideo);

Lưu ý rằng các biến đó không phải là tham số lệnh; chúng là các biến được giữ trong phiên MySQL. Để nhận giá trị của các biến đó, ngay sau lệnh gọi thủ tục, sử dụng cùng một kết nối MySQL:

SELECT @IDVideo, @YoutubeIDVideo ;

Và xử lý tập kết quả từ truy vấn đó giống như bạn muốn bất kỳ câu lệnh SELECT nào khác mà bạn muốn trả về một hàng.

Cập nhật:

Với các phiên bản gần đây hơn của MySQL Connector hỗ trợ các tham số OUT, tôi nghĩ bạn cần chỉ định rằng các tham số đó là tham số OUT bằng cách đặt một thuộc tính thành viên:

cmd.Parameters["out_IDVideo"].Direction = ParameterDirection.Output;
cmd.Parameters["out_YoutubeIDVideo"].Direction = ParameterDirection.Output;

Như tôi đã chỉ ra trước đây ...

Trong các phiên bản cũ hơn của MySQL Connector không hỗ trợ các tham số OUT, cách giải quyết là gọi thủ tục bằng cách sử dụng các biến MySQL làm đối số. Các giá trị trả về từ lệnh gọi thủ tục được giữ lại trong phiên MySQL. Ngay sau khi gọi thủ tục, chúng tôi sẽ chạy một SELECT để truy xuất nội dung của các biến người dùng.



  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ác truy vấn MySQL nhanh khi chạy trực tiếp nhưng thực sự chậm khi chạy dưới dạng proc được lưu trữ

  2. Tránh đưa vào SQL trong SQL-regex do người dùng tạo

  3. Xử lý múi giờ trong PHP và MySQL

  4. Còn gì tốt hơn - nhiều bàn nhỏ hay một bàn lớn?

  5. Chọn nhiều tổng với truy vấn MySQL và hiển thị chúng trong các cột riêng biệt