2013-03-07 17 views
6

Tôi đang cố gắng sử dụng câu lệnh đã chuẩn bị trong bàn làm việc mysql trong một con trỏ. Con trỏ hoạt động trên một tập dữ liệu rất lớn để nó được thực thi nhiều lần. Mỗi lần một kết quả mới được hiển thị cho bước EXECUTE. Kết quả này cuối cùng trong mysql workbench bị rơi vì quá nhiều cửa sổ kết quả mở.Làm thế nào bạn có thể vô hiệu hóa kết quả đầu ra cho lệnh mysql EXECUTE trong bàn làm việc

Trong con trỏ tôi làm điều gì đó như thế này:

PREPARE stmt2 FROM @eveningQuery; 
EXECUTE stmt2; 
DEALLOCATE PREPARE stmt2; 

Thông thường tôi sử dụng công cụ như

set aVar = (EXECUTE stmt2); 

để bịt miệng truy vấn nhưng EXECUTE không hoạt động như thế.

Có ai biết cách bạn có thể tắt đầu ra cho lệnh EXECUTE trong mysql không?

Lưu ý: Tôi hiểu làm thế nào tôi có thể lấy lại dữ liệu trong một biến, tuy nhiên những gì tôi muốn ngăn chặn là nó sẽ được hiển thị trong phần tổng quan kết quả như thế này enter image description here

Điều này sẽ làm mysql-workbench sụp đổ khi looped quá nhiều.

chỉnh sửa vì được hỏi ví dụ về @eveningQuery.

SET @eveningQuery = CONCAT ('chọn @resultNm: = tồn tại (chọn idSplitBill từ tb_SplitDay nơi idSplitBill =', idSplitBillVar, 'và', @columnNameEv, '= 1 và softdelete = 0)');

idSplitBillVar = id đến từ con trỏ. @columnNameEv = một cột mà tôi đang điền vào một cách khác nhau.

Tôi đã thêm thông tin này vì nó được hỏi, tuy nhiên nó không thực sự quan trọng trong quan điểm của tôi bởi vì câu hỏi vẫn đứng ngay cả với truy vấn đơn giản nhất. Khi bạn thực hiện một câu lệnh chuẩn bị, bạn sẽ nhận được một kết quả đầu ra. Tôi chỉ muốn vô hiệu hóa hành vi này.

+0

Chỉ cần ghi đè lên, nhưng ý của bạn là "thủ tục lưu sẵn" thay vì "con trỏ"? – RandomSeed

+0

Cảm ơn bạn đã bình luận. Nó là một con trỏ được định nghĩa trong một thủ tục lưu sẵn, nhưng tôi không nghĩ rằng điều đó thay đổi rất nhiều. –

+0

Bạn có thể hiển thị ví dụ về @eveningQuery quaery không? – Devart

Trả lời

6

Truy vấn bạn sử dụng tạo mới kết quả-set, và GUI khách hàng chương trình nó (... nhiều lần) -

SELECT @resultNm:=EXISTS(
    SELECT idSplitBill FROM tb_SplitDay 
    WHERE idSplitBill =', idSplitBillVar, ' AND ', @columnNameEv ,' = 1 AND softdelete = 0 
) 

Bạn có thể viết lại truy vấn này, và kết quả-bộ sẽ không được tạo ra -

SELECT EXISTS(
    SELECT idSplitBill FROM tb_SplitDay 
    WHERE idSplitBill =', idSplitBillVar, ' AND ', @columnNameEv ,' = 1 AND softdelete = 0 
) 
INTO @resultNm 
+0

Ok, điều đó dường như làm điều này, tôi nghĩ cú pháp của truy vấn của tôi là cụ thể đối với một tuyên bố chuẩn bị, nhưng như bạn đã đề xuất, nó không phải là. Cảm ơn câu trả lời, nó sẽ làm cho cuộc sống của tôi dễ dàng hơn. (Ps Tôi sẽ trao giải thưởng càng sớm càng tốt.) –