Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SQL - tworzenie procedury
Forum PHP.pl > Forum > Bazy danych > MySQL
Koxcon
Witam

Tworzę sobie procedurę w SQL, jestem początkujący "w tej branży". Procedura ma na celu wykonanie obliczeń i uaktualnienie tabeli, cała procedura jest chyba dobrze napisana, ale mam pewien problem - jak w procedurze umieścić dane z tabeli? Chodzi mi o taki algorytm:
1. Wczytaj dane z kolumny w tabeli
2. Na podstawie wczytanych danych przeprowadź wszystkie obliczenia
3. Zaktualizuj inną kolumnę w tej samej tabeli.

Próbowałem pisać coś w stylu:
  1. SELECT B = B FROM tabela

ale wyrzuca mi błąd "Error Code: 1054 Unknown column 'B' in 'field list'"

Próbowałem szukać jakichś poradników, ale nie udało mi się znaleźć nic, oprócz niedziałającego powyższego rozwiązania

javafxdev
Pokaż jak wygląda procedura będzie łatwiej.
Koxcon
  1. CREATE PROCEDURE oblicz()
  2. begin
  3. DECLARE a FLOAT DEFAULT 6378137;
  4. DECLARE b FLOAT DEFAULT 6356752.3141;
  5. DECLARE e FLOAT DEFAULT 0.0818191911199;
  6. DECLARE R FLOAT DEFAULT 6367449.145771;
  7. DECLARE U FLOAT;
  8. DECLARE V FLOAT;
  9. DECLARE K FLOAT;
  10. DECLARE C FLOAT;
  11. DECLARE FI FLOAT;
  12. DECLARE LAM FLOAT;
  13. DECLARE P FLOAT;
  14. DECLARE Q FLOAT;
  15. DECLARE S FLOAT;
  16. DECLARE X_M FLOAT;
  17. DECLARE Y_M FLOAT;
  18. DECLARE zx FLOAT;
  19. DECLARE zy FLOAT;
  20. DECLARE X_GK FLOAT;
  21. DECLARE Y_GK FLOAT;
  22. DECLARE X_1992 FLOAT;
  23. DECLARE Y_1992 FLOAT;
  24. SELECT B = B FROM wsp_miasta;
  25. SELECT L = L FROM wsp_miasta;
  26. SET U = 1 - (e*sin(radians(B)));
  27. SET V = 1 - (e*sin(radians(B)));
  28. SET K = POW(U/V, E/2);
  29. SET C = K * TAN(radians(B)/2) + (PI()/4);
  30. SET FI = 2 * ATAN(C) - (PI()/2);
  31. SET LAM = radians(L);
  32. SET P = SIN(FI);
  33. SET Q = COS(FI) * COS(LAM);
  34. SET R = 1 + COS(FI) * SIN(LAM);
  35. SET S = 1 - COS(FI) * SIN(LAM);
  36. SET X_M = R * ATAN(P/Q);
  37. SET Y_M = 0.5 * R * LN(R/S);
  38. SET zx = X_M/R;
  39. SET zy = Y_M/R;
  40. SET X_GK = R * (zx + 0.0008377318247344 * sin(2*zx) + 0.0000007608527788826 * sin(4*zx)+0.000000001197638019173 * sin(6*zx)+0.000000000002443376242510*sin(8*zx));
  41. SET Y_GK = R * (zy + 0.0008377318247344 * sin(2*zy) + 0.0000007608527788826 * sin(4*zy)+0.000000001197638019173 * sin(6*zy)+0.000000000002443376242510*sin(8*zy));
  42. SET X_1992 = 0.9993 * X_GK - 5300000;
  43. SET Y_1992 = 0.9993 * Y_GK + 500000;
  44. UPDATE wsp_miasta SET X = X_1992;
  45. UPDATE wsp_miasta SET Y = Y_1992;
  46. end
  47. //
nospor
znajdz 10 roznic
b
B
Koxcon
Ok, poprawiłem, ale nadal występuje ten sam błąd.
viking
Select kolumna into zmienna...
Patrzyłeś w dokumentację na skladnię?
Koxcon
Fakt, stworzyłem "temporary table", wczytuję do niej dane. Teraz, jak mniemam, trzeba jakąś pętlą, żeby do wszystkich wartości się to odniosło?

Dziękuję za pomoc, poradziłem sobie używając pętli smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.