2009-09-16 12 views
6

Czy istnieje sposób w skrypcie MySQL do zadeklarowania tablicy (lub dowolnej kolekcji) i zapętlenia się nad nią, aby zrobić coś?Zmienna tablicowa w mysql

Na przykład

SET @myArrayOfValue=[2,5,2,23,6] 


for each @value in @myArrayOfValue 
    INSERT INTO EXEMPLE VALUES(@value, 'hello'); 
end for each 
+4

pod jakimi rzeczywistymi okolicznościami chciałbyś to zrobić? jeśli tablica pochodzi z instrukcji SELECT, powinieneś po prostu INSERT ... SELECT. jeśli tablica pochodzi z twojej aplikacji, powinieneś WSTAWIĆ W NAJWYŻSZE WARTOŚCI (wartość @, 2), (wartość @, 5), (wartość @, 2) ... – longneck

+3

Chcę tylko zrobić skrypt konserwacyjny, aby dodać nowe wartość. Zamiast tworzyć kopię każdej wstawki, chciałbym utworzyć listę na początku skryptu. Ludzie nie będą musieli czytać całego skryptu, aby wiedzieć, co zmodyfikować, ale tylko zmienna na początku. – Mike

+0

@longneck, Zapytaj 16-kę odwiedzających na tej stronie, a także 67-kę odwiedzających na http://stackoverflow.com/q/12176709/632951 dla rzeczywistych okoliczności, w których możesz to zrobić. – Pacerier

Odpowiedz

2

Nie, nie obsługuje SQL dla każdej/składni itp. Najbliżej będziesz używał kursorów. Ponadto, nie ma w tablicy składni SQL - trzeba by użyć:

SELECT 2 FROM DUAL 
UNION ALL 
SELECT 34 FROM DUAL 
UNION ALL 
SELECT 24 FROM DUAL 

... skonstruować swoją „tablicę wartości” równoważną w SQL.

Skrypty SQL miałyby indywidualne instrukcje INSERT. Chciałbyś używać PHP/Java/etc. używać składni pętli for-esque, jak to, co podano w twoim przykładzie.

+0

Nie mam nic przeciwko używaniu kursora, ale wartości muszą pochodzić z czegoś podobnego do SET @myValues ​​[2,3,4,22]. Thanx – Mike

+0

Thanx, tego właśnie szukałem. Składnia jest zbyt brzydka, by można ją było użyć, ale odrzuciła moje pytanie. – Mike

0

Czy możesz użyć czegoś takiego jak MySQL SET? zamiast pętli możesz zapisać wartości w SET.

+0

Nie Nie mogę, muszę wstawić wartości w różnych wierszach. Chcę to zrobić, aby skrypt był łatwy w użyciu. – Mike

+0

Użyj PHP (lub czegoś) i przeprowadź pętlę przez każdą z tablic i po prostu wykonaj prostą wstawkę, a następnie –

+0

Potrzebuję tego w skrypcie mySQL. – Mike