2013-03-07 7 views
6

Sto provando a usare un'istruzione preparata in mysql workbench in un cursore. Il cursore funziona su un set di dati molto grande, quindi viene eseguito molte volte. Ogni volta che viene visualizzato un nuovo risultato per il passaggio ESEGUI. Ciò si traduce eventualmente in un crash del workbench mysql a causa di troppe finestre di risultati aperte.Come disattivare l'output del risultato per il comando mysql EXECUTE nel workbench

nel cursore faccio qualcosa di simile:

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

Normalmente io uso roba come

set aVar = (EXECUTE stmt2); 

di mettere a tacere la query, ma EXECUTE non funziona così.

Qualcuno sa come disattivare l'output per il comando EXECUTE in mysql?

Nota: ho capito come posso recuperare i dati in una variabile, ma quello che voglio evitare è che viene visualizzato nella panoramica dei risultati come questo enter image description here

Ciò renderà incidente mysql-banco di lavoro quando in loop troppo tanto.

modifica perché è stato chiesto un esempio di @eveningQuery.

SET @eveningQuery = CONCAT ('select @resultNm: = esiste (selezionare idSplitBill da tb_SplitDay dove idSplitBill =', idSplitBillVar, 'e', ​​@columnNameEv, '= 1 e softdelete = 0)');

idSplitBillVar = l'ID proveniente dal cursore. @columnNameEv = una colonna che sto compilando in modo variabile.

Ho aggiunto queste informazioni perché è stato chiesto, tuttavia non è molto importante secondo me perché la domanda rimane valida anche con la query più semplice. Quando si esegue una dichiarazione preparata, si otterrà un risultato di output. Voglio solo disabilitare questo comportamento.

+0

Basta fare il pignolo, ma intendevi "stored procedure" piuttosto che "cursor"? – RandomSeed

+0

Grazie per il tuo commento. È un cursore definito in una procedura memorizzata, ma non credo che cambi il problema molto. –

+0

Puoi mostrare un esempio di @eveningQuery quaery? – Devart

risposta

6

La query si utilizza crea nuovo risultato-set, e client GUI vederlo (... molte volte) -

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

È possibile riscrivere la query, e risultato-set -

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

Ok, sembra che faccia il trucco, pensavo che la sintassi della mia interrogazione fosse specifica per una dichiarazione preparata, ma come hai suggerito, non lo è. Grazie per la risposta, mi renderà la vita più facile. (Ps assegnerò il taglie al più presto.) –