2009-10-19 13 views
6

Jestem przyzwyczajony do analizatora zapytań MSSQL. Konieczne jest przekonwertowanie niektórych SP dla projektu hobby, mam problem z przejściem do przeglądarki zapytań mysql, szczególnie jeśli chodzi o używanie zmiennych. Zasadniczo próbuję zasymulować procedurę, zanim będzie to procedura.Przeglądarka zapytań MySQL - użycie zmiennych

Więc w Query Analyzer Chciałbym napisać coś takiego ...

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 

Wtedy będę bawić z zapytania (bo to o wiele bardziej skomplikowane, że na przykład jeden) aż mam rację lub zastąpiłbym wartości zmiennych, ponieważ są one używane w tekście zapytania w 100-krotnym tempie i to jest wiele powtórzeń.

Moje pytanie brzmi: jak to zrobić, aby działało w przeglądarce zapytań MySQL.

Rozumiem, że wykonywana jest tylko instrukcja podświetlona (kursor znajduje się w tym wierszu lub bloku tekstu). I myślę, że rozumiem, że należy użyć przycisku "Rozpocznij transakcję", ale nie mogę go uruchomić. Oto, co mam do tej pory

DELIMITER $$ 

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

delimiter ; 

Dzięki za pomoc. Nie mogę tego rozwiązać.

+0

ładne pytanie !. Ja też chciałbym zobaczyć odpowiedź na to pytanie. –

Odpowiedz

0

Co powiesz na użycie karty skryptu zamiast karty zestawu wyników? W ten sposób możesz wykonać więcej niż jedną instrukcję.

+0

Zakładki skryptów nie pozwalają zobaczyć wyników SELECT. –

1

Zazwyczaj MySQL Query Browser używa oddzielnego połączenia dla każdej instrukcji wykonywanej na karcie zapytania. Obejmuje to semantykę auto-commit. Oznacza to, że jeśli użytkownik zostanie zapisany do tabeli, natychmiast wszyscy inni klienci połączeni z tym samym serwerem mogą zobaczyć nowy rekord po zakończeniu wyciągu.

Jeśli klikniesz przycisk "Rozpocznij transakcję", będzie to inne. Dopóki nie klikniesz przycisku "Cofnij" lub "Zatwierdź", wszystko, co zrobisz na tej karcie zapytania, będzie w ramach jednej transakcji.

Aby to wypróbować, połącz dwóch klientów jednocześnie, z których przynajmniej jedna jest przeglądarką kwerend. W drugim kliencie wykonaj SELECT COUNT(*) FROM testtable, zakładając, że taka tabela istnieje.

Teraz w przeglądarce zapytań kliknij przycisk "Rozpocznij transakcję". Wstaw nowy rekord do tabeli testowej. Do jeszcze nie naciśnij przycisk zatwierdzania, ale zamiast tego, w tej samej przeglądarce zapytań, wykonaj to samo SELECT COUNT(*) FROM testtable. Zobaczysz wartość o jeden wyższą niż w drugim kliencie, ponieważ ta SELECT jest w tej samej transakcji, co właśnie zrobiłeś: . Ponownie wykonaj SELECT w drugim kliencie i zobacz, czy nadal masz tę samą wartość, ponieważ nie widzisz jeszcze niezatwierdzonego INSERT.

Teraz w przeglądarce kwerend kliknij przycisk "Zatwierdź" i ponownie uruchom SELECT w drugim kliencie po raz trzeci. Teraz zobaczysz również zwiększoną liczbę wierszy.

Nie próbowałem używać zmiennych, ale zakładam, że to powinno działać dobrze.

Nadzieję, że pomaga!

2

ograniczają zapytań średnikiem, takich jak ten:

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

zapytanie zostanie podświetlony, gdy umieścisz kursor nad nim.

Następnie wystarczy nacisnąć Ctrl-Enter, aby wykonać to zapytanie, które chcesz wykonać.

Każda zakładka zachowuje własną sesję, więc wartości @var pozostaną zdefiniowane po wykonaniu pierwszego zapytania. Możesz powtórzyć drugie zapytanie tyle razy, ile chcesz.

+0

Aby wyjaśnić: Jest to prawdą, jeśli przycisk rozpoczęcia transakcji został naciśnięty jako pierwszy. Dopiero wtedy drugie stwierdzenie wskaże przypisane wartości zmiennych! W przeciwnym razie drugie zapytanie zwróci wartość NULL. –

+1

'@Daniel Schneller': Nie, to nieprawda. Zmienne są związane z sesją, a nie z transakcją. Po prostu spróbuj. – Quassnoi

+0

Tak właśnie zrobiłem, zanim skomentowałem. Zobacz tutaj: http://picasaweb.google.com/lh/photo/ELAIKb0BCCRw1DC1i2TIMQ?feat=directlink i tutaj: http://picasaweb.google.com/lh/photo/47es8mXWyGNNNUBO8mjg9A?feat=directlink –

0

Nie wygląda na to, co chcę, jest naprawdę możliwe. Używam tylko dwóch zakładek - jednej karty skryptu do edycji zapytania i karty wyników, aby ją wywołać. Działa, ale nie jest to tak łatwe jak MSSQL Query Analyzer.

Powiązane problemy