2013-03-07 7 views
6

カーソルのmysql workbenchでprepared statementを使用しようとしています。カーソルは非常に大きなデータセット上で動作するので、何度も実行されます。 EXECUTEステップの新しい結果が表示されるたびにこれは結果的に開いている結果ウィンドウが多すぎるため、mysqlワークベンチがクラッシュする結果になります。私はこのような何かカーソルでワークベンチのmysql EXECUTEコマンドの結果出力を無効にする方法

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

を通常、私は、クエリを沈黙が、EXECUTEする

set aVar = (EXECUTE stmt2); 

ようなものを使用するには、そのように動作しません。

誰かがmysqlのEXECUTEコマンドの出力をどのように無効にできるか知っていますか?

注:私は、変数のデータを取得する方法を理解し、しかし、私がないようにしたいと、それはあまりにもループしたときにこれは、MySQL-ワークベンチをクラッシュさせます。このenter image description here

のような結果の概要に表示されていることです多く。

編集 @eveningQueryの例が尋ねられたためです。

SETの@eveningQuery = CONCAT( 'セレクト@resultNm:= tb_SplitDayからidSplitBillを選択し(存在する場合idSplitBill ='、idSplitBillVar、 'と'、@columnNameEv、 '= 1とsoftdelete = 0)')。

idSplitBillVar =カーソルからのIDです。 @columnNameEv =私が可変的に埋めている列。

質問がありましたので、私はこの情報を追加しましたが、もっとも単純なクエリでも問題はまだ残っているため、私の意見では問題にはなりません。プリペアドステートメントを実行すると、出力結果が得られます。私はこの動作を無効にしたいだけです。

+0

ちょうどニックピッキングですが、「カーソル」ではなく「ストアドプロシージャ」を意味しましたか? – RandomSeed

+0

ご意見ありがとうございます。それはストアドプロシージャで定義されたカーソルですが、私は問題を非常に変更するとは思わない。 –

+0

@eveningQuery quaeryの例を表示できますか? – Devart

答えて

6

使用するクエリは、それを新しい結果セットを作成し、GUIクライアント・ショー(...何度) -

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

あなたはこのクエリを書き換えて、結果セットが作成されませんことができます -

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

さて、それはトリックを行うようだ、私は私のクエリの構文は準備されたステートメントに固有だと思ったが、あなたが示唆したように、そうではありません。答えをありがとう、それは私の人生を楽にするでしょう。 (私は賞金を授与します) –

関連する問題