2016-09-02 22 views
0

我有一個使用SELECT語句循環的過程,但該語句實際上只是設置變量。這意味着有很多東西被展示出來,我不需要看,而且它正在泛濫我的終端。MySQL命令行:不要在存儲過程中顯示查詢結果

這裏是我的意思的例子,雖然這其實不是什麼我跑(因爲這是公司的信息):

DROP PROCEDURE IF EXISTS test; 

DELIMITER # 
    CREATE PROCEDURE test() 
    BEGIN 
     SET @key:=1; 
     testloop: REPEAT 
      SELECT 
       @dummyString := stringField 
      FROM 
       aTable; 

      SET @dummyStringAll :=CONCAT(@dummyStringAll,$dummyString); 
      SET @key := @key + 1; 

      UNTIL @key>10 
     END REPEAT testloop; 
    END # 
DELIMITER ; 

是否可以運行SELECT(無論是過程內或不)和而不是顯示SELECT查詢的結果?也許不是世界上最重要的事情,但它會有所幫助。

+1

想知道如果使用'selec ... into variable'語法會阻止它被視爲一個帶有結果集的select?即'SELECT stringField INTO dummyString FROM ...'。 –

+0

哇,這樣做,它大大減少了查詢運行的時間(我猜是因爲它不會浪費時間在屏幕上繪製表格)。 如果你想寫出來作爲答案,我會標記在正確的答案。 – Andrew

回答

1

如果未存儲在變量中,存儲過程將返回查詢結果集。

它如何知道你將結果存儲在變量中?

在查詢中不使用變量,而是使用SELECT value INTO <variable>語法。見:13.2.9.1 SELECT ... INTO Syntax

從常見問題:

1)能的MySQL 5.6的存儲程序返回的結果集?

存儲過程可以,但存儲的功能不能。如果您在存儲過程中執行普通SELECT,則結果集將直接返回給客戶端。

因此,使用'SELECT ... INTO ...'語法將阻止該過程從查詢中返回結果集。