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.