2009-10-19 93 views
6

我習慣了MSSQL的查詢分析器。需要將一些SP轉換爲業餘愛好項目,我無法過渡到mysql查詢瀏覽器,特別是在使用變量時。我基本上試圖在程序開始之前模擬一個程序。MySQL查詢瀏覽器 - 使用變量

因此,在查詢分析器中我會寫這樣的事情...

delcare @var1 int 
declare @var2 varchar(30) 

set @var1 = 17 --some thing i'd normally pass to the SP 
set @var2 = 'something else id pass to the SP' 

SELECT * 
FROM table 
WHERE id = @var1 
OR textcolumn = @var2 

然後我會玩的查詢(因它的方式更加複雜的是,例如,一個),直到我得到它的權利,或者我會替換這些變量的值,因爲它們在查詢的主體中被使用了100次,這是很多重新輸入的。

所以我的問題是如何讓它在MySQL的查詢瀏覽器中工作。

據我所知,它只執行任何突出顯示的語句(光標在該行或文本塊上)。我想我明白,「開始交易」按鈕應該以某種方式使用,但我不能得到它。這裏是我到目前爲止

DELIMITER $$ 

begin 
declare var1 varchar(1) default 'W'; 
    select count(*) from gamestatspitchers where wls = var1; 
end$$ 

delimiter ; 

感謝您的幫助。我似乎無法解決這個問題。

+0

有趣的問題!我也希望看到這個答案。 – 2009-10-19 02:51:27

回答

0

如何使用腳本選項卡而不是結果集選項卡?這樣你可以執行多個語句。

+0

腳本標籤不允許您查看SELECT的結果。 – 2009-10-19 11:33:23

1

通常,MySQL查詢瀏覽器將爲您從查詢選項卡執行的每條語句使用單獨的連接。這包括自動提交語義。這意味着,如果您將INSERT表記錄到表中,則立即所有連接到同一服務器的其他客戶端都可以看到新記錄。

如果您點擊「開始交易」按鈕,這將有所不同。只要您沒有點擊「回滾」或「提交」按鈕,您在該查詢選項卡中執行的所有操作都將處於單個交易中。

要嘗試此操作,請同時連接兩個客戶端,至少一個是查詢瀏覽器。在另一個客戶端做一個SELECT COUNT(*) FROM testtable,假設這樣的表存在。

現在,在查詢瀏覽器中點擊「開始交易」按鈕。將新記錄插入測試表。做不是還擊中了提交按鈕,而是在相同的查詢瀏覽器中執行相同的操作SELECT COUNT(*) FROM testtable。您會看到一個比另一個客戶端高的值,因爲此SELECT與您剛剛完成的INSERT處於相同的交易。 在另一個客戶端中重新執行SELECT,看到您仍然獲得相同的值,因爲您尚未看到未提交的INSERT

在查詢瀏覽器中,現在點擊「提交」按鈕,第三次在其他客戶端重新運行SELECT。現在你也會看到增加的行數。

我還沒有嘗試過使用變量,但我認爲這應該工作得很好。

希望有幫助!

2

劃定查詢,像這樣分號:

SELECT @var1 := 17, @var2 := 'somethingelse'; 
SELECT @var1, @var2; 

當你把光標移動到那裏的查詢將被高亮顯示。

然後只需按Ctrl-Enter即可執行您想要執行的查詢。

每個選項卡都保留其自己的會話,所以@var的值將在您執行第一個查詢後保持定義。您可以根據需要多次重新運行第二個查詢。

+0

澄清:如果首先按下啓動事務按鈕,則只有這樣。只有這樣第二條語句纔會顯示變量的賦值!否則,第二個查詢將返回其他值作爲NULL。 – 2009-10-19 13:08:38

+1

'@Daniel Schneller':不,這是不正確的。變量是會話綁定的,而不是事務綁定的。去嘗試一下。 – Quassnoi 2009-10-19 13:31:52

+0

這就是我在評論之前所做的。看到這裏:http://picasaweb.google.com/lh/photo/ELAIKb0BCCRw1DC1i2TIMQ?feat=directlink和在這裏:http://picasaweb.google.com/lh/photo/47es8mXWyGNNNUBO8mjg9A?feat=directlink – 2009-10-20 08:07:29

0

看起來不像我想要的是真的可能。我只使用了兩個選項卡 - 一個用於編輯查詢的腳本選項卡和一個用於調用它的結果選項卡。它的工作原理,但它不像MSSQL查詢分析器這麼簡單。