Autor | Zpráva | ||
---|---|---|---|
Kuba5 Profil |
#1 · Zasláno: 22. 5. 2013, 18:38:32
Ahoj,
chci do tabulky vložit čísla v řadě třeba od 2100 do 2199, ale nechci je psát po jednom, nedá se SQL příkazem nějak jednodušše zapsat od xxxxx do xxxxx? DÍky moc. |
||
Alphard Profil |
#2 · Zasláno: 22. 5. 2013, 18:41:39
Ne, ale lze použít while.
|
||
Kuba5 Profil |
#3 · Zasláno: 22. 5. 2013, 19:28:22
Alphard:
Díky. Zkusil jsem tedy: CREATE PROCEDURE dowhile() BEGIN DECLARE v1 INT DEFAULT 6100; WHILE v1 < 6177 DO INSERT INTO domestic (numbers) VALUES (v1); SET v1 = v1 - 1; END WHILE; END; Co je špatně? |
||
Kuba5 Profil |
#4 · Zasláno: 22. 5. 2013, 20:47:37
Ještě jsem zkoušel různé kódy, ale nic mi nefunguje, všude syntax error.
|
||
Kajman Profil |
#5 · Zasláno: 22. 5. 2013, 21:38:48
Kuba5:
„Co je špatně?“ To řekněte Vy, co to píše za chybovou hlášku. Třeba jste zapomněl změnit delimiter, třeba jste proceduru zapomněl zavolat. Těžko říct. |
||
Kuba5 Profil |
#6 · Zasláno: 22. 5. 2013, 21:41:42
Kajman:
Omlouvám se, zapomněl jsem vložit sem chybu. Chyba SQL-dotaz: CREATE PROCEDURE dowhile( ) BEGIN DECLARE v1 INT DEFAULT 6100; MySQL hlásí: Dokumentace #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 |
||
Tori Profil |
#7 · Zasláno: 22. 5. 2013, 22:29:51
Kuba5:
Musíte dočasně (= po dobu definice procedury) změnit oddělovač SQL příkazů na něco jiného. http://dev.mysql.com/doc/refman/5.0/en/stored-programs-defining.html |
||
Kuba5 Profil |
#8 · Zasláno: 23. 5. 2013, 12:51:24 · Upravil/a: Kuba5
Tori:
D Tori: Díky za radu. Stále mi to ale nefunguje. Problém je s tím, že jsem se s tímto nikdy nesetkal a vůbec nevím jestli píšu do SQL příkazu správné věci. Musím použít delimiter? Zkusil jsem změnit oddělovače, ale pořád stejná chyba. Tak změna. Objevil jsem kód, který vypadá funkčně a vytvoří se aspoň procedura. Potom už jen zavolat. DELIMITER ;; CREATE PROCEDURE dowhile() BEGIN DECLARE v1 INT DEFAULT 5; WHILE v1 > 0 DO INSERT table VALUES (NULL); SET v1 = v1 - 1; END WHILE; END;; DELIMITER ; Tak.. funkční varianta: DELIMITER ;; CREATE PROCEDURE dowhile() BEGIN DECLARE v1 INT DEFAULT 6100; WHILE v1 < 6177 DO INSERT INTO domestic (numbers) VALUES (v1); SET v1 = v1 + 1; END WHILE; END;; DELIMITER ; a následně: CALL dowhile(); |
||
Kcko Profil |
#9 · Zasláno: 23. 5. 2013, 17:44:57
Kuba5:
Když budeš ještě o trošku chytřejší , tak si ji upravíš tak, abys nemusel neustále měnit čísla přímo uvnitř procedury ale pomocí parametrů... takto nějak CREATE PROCEDURE `dowhile`(IN `numberFrom` INT, IN `numberTo` INT) BEGIN WHILE numberFrom < numberTo DO INSERT INTO table(id) VALUES (numberFrom); SET numberFrom = numberFrom + 1; END WHILE; END |
||
Kuba5 Profil |
#10 · Zasláno: 24. 5. 2013, 12:57:07
Díky, ale teď mám ještě jeden problém.
Mám v té tabulce sloupce s typem INT, ale teď potřebuju INSERT čísel jako 0050, 0051 atd. jak to lze udělat, aby to zobrazovalo i nuly? Teď mi to ukazuje jen 50, 51 atd. bez nul. DÍky. |
||
Kajman Profil |
#11 · Zasláno: 24. 5. 2013, 13:06:47
Ten sloupec si nastavte jako
INT(4) ZEROFILL |
||
Kuba5 Profil |
#12 · Zasláno: 24. 5. 2013, 13:25:00
Kajman:
Děkuji |
||
Časová prodleva: 11 let
|
0