• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Deklarowanie zmiennych w procedurze SQL

0 głosów
2,648 wizyt
pytanie zadane 22 kwietnia 2016 w SQL, bazy danych przez Marven88 Użytkownik (750 p.)

Witam,

Od dłuższego czasu zmagam się z MySQL. O co chodzi?  Otóż korzystając z kreatora procedur/funkcji wbudowanego w phpMyAdmin oraz konsoli do wpisywania czystego SQL-a. Cały czas wyrzuca mi błąd podczas deklaracji zmiennej. Nie wiem co na to poradzić. 

Deklaruje w ten sposób:

DECLARE nazwazmiennej typzmiennej; np. DECLARE z int;

W "nagrodę" dostaje coś takiego:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DECLARE z int' at line 2

3 odpowiedzi

0 głosów
odpowiedź 22 kwietnia 2016 przez Surykat Stary wyjadacz (14,780 p.)

A wrzuciłeś tą zmienną pomiędzy

BEGIN ... END 

W jakim kontekście deklarujesz tą zmienną? Mam na myśli, czy jest to wnętrze jakiejś procedury czy coś. 

Spróbuj może użyć tej zmiennej bez deklarowania jej, a daj od razu znak @ przed jej nazwą, np. w ten sposób:

SELECT @nazwaZmiennej
komentarz 22 kwietnia 2016 przez Marven88 Użytkownik (750 p.)

Tak oczywiście jest to pomiędzy znacznikami 

CREATE PROCEDURE `nazwa`()
	BEGIN
    	DECLARE	var INT;
		
		SELECT  * FROM `tabela` INTO var;
   END

i błąd

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 3

 

Z tego co czytałem w książkach. W MySQL nie ma potrzeby użycia @ przy nazwie zmiennych. Bez Deklaracji krzyczy, że nie jest zdeklarowana smiley

komentarz 22 kwietnia 2016 przez Franklin Obywatel (1,140 p.)
Masz napisane przecież, że błąd składni i należy użyć '' w 3 linijce tzn. 'var'. Jeśli nie podziała to spróbuj nie używać apostrofów w ogóle :)
0 głosów
odpowiedź 22 kwietnia 2016 przez DCC_IT Początkujący (330 p.)

A czy czasami zapytanie:

SELECT  * FROM `tabela` INTO var;

Nie zwraca więcęj niż jedną kolumnę? Jeśli tak to nie przypiszesz tego do zmiennej skalarnej typu int.

komentarz 22 kwietnia 2016 przez Marven88 Użytkownik (750 p.)
Problem w tym,  że to w ogóle nie przechodzi przez debuga ;)
komentarz 22 kwietnia 2016 przez DCC_IT Początkujący (330 p.)
Co tu chcesz debugować w takim prostym kodzie. Pokaż strukturę tabeli "tabela" lub wykonaj to zapytanie i wrzuć jego wynik.
komentarz 22 kwietnia 2016 przez DCC_IT Początkujący (330 p.)

Spróbuj tak swoje zapytani w 5 wierszy zastąpić takim:

SELECT COUNT(*) INTO var FROM tabela;

 

0 głosów
odpowiedź 23 kwietnia 2016 przez Marven88 Użytkownik (750 p.)
Generalnie w prostych procedurach już nie mam tego błędu :) gorzej z bardziej rozbudowanymi, ale to już inny wątek.

Podobne pytania

0 głosów
0 odpowiedzi 248 wizyt
pytanie zadane 22 listopada 2019 w SQL, bazy danych przez antypop Mądrala (5,730 p.)
0 głosów
1 odpowiedź 332 wizyt
pytanie zadane 22 lutego 2017 w SQL, bazy danych przez kacperl95 Obywatel (1,980 p.)
+1 głos
1 odpowiedź 277 wizyt
pytanie zadane 24 października 2015 w SQL, bazy danych przez sliwka92 Nowicjusz (240 p.)

93,605 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,096 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...