Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Argument w zapytaniu wewnatrz procedury, jak sie odwolac do zmiennej?
phoenix84
post
Post #1





Grupa: Zarejestrowani
Postów: 218
Pomógł: 0
Dołączył: 14.04.2004
Skąd: Słupsk, Nowy Sącz

Ostrzeżenie: (0%)
-----


witam

Jak się odwolac do argumentu z procedury wewnatrz zapytania (chodzi mi o znacznik)

przyklad:

WHERE `xxx`=`yyy` (porowna wartosc z kolumna yyy)
WHERE `xxx`='yyy' (porowna wartosc z wartoscia yyy)
WHERE `xxx`=@yyy (porowna wartosc ze zmienna yyy spoza procedury)

a co jak mam argument procedury nazwany yyy? kiedy odwolam sie do niego po prostu jako do yyy to wywala error... wiec jak sie do niego odwolac? obchodze to teraz tak, ze przed wywolaniem procedury deklaruje zmienne i przypisuje im wartosci zamiast tworzyc argumenty i potem odwoluje sie przez @, ale to chyba nie jest tak jak manual przykazuje... a w samym manualu nie ma takiego przykladu... jest tylko jak wykonywac operacje na takich argumentach (ale nie widze przykladu z wykorzystaniem tych argumentow w zapytaniu do bazy)

jak ktos ma pojecie jak to zrobic, bylbym wdzieczny (IMG:style_emoticons/default/smile.gif)

k.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pmir13
post
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

Ostrzeżenie: (0%)
-----


Nie da się argumentu przekazać bezpośrednio do zapytania jako nazwy kolumny, tabeli itp. Tam mogą być tylko identyfikatory. Argumenty bezpośrednio do zapytania można wpisać tylko tam, gdzie normalnie byś wpisywał gotowe wartości. Sam fakt, że czegoś takiego potrzebujesz daje do myślenia nad strukturą bazy. Jeśli jednak koniecznie chcesz to zrobić to musisz pomóc sobie klejonym preparowanym zapytaniem:

  1. delimiter $
  2. DROP PROCEDURE IF EXISTS mojasuma$
  3. CREATE PROCEDURE mojasuma( IN kolumna CHAR(128) )
  4. BEGIN
  5. SET @prepared_sql =
  6. CONCAT( 'SELECT SUM(',
  7. kolumna,
  8. ') AS suma FROM produkty' );
  9. PREPARE stmt FROM @prepared_sql;
  10. EXECUTE stmt;
  11. DEALLOCATE PREPARE stmt;
  12. END$
  13. delimiter ;
  14.  
  15. CALL mojasuma( 'ilosc' );
  16. CALL mojasuma( 'cena*ilosc' );

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 16:04