Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SQL - tworzenie procedury
Koxcon
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2015

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


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

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
javafxdev
post
Post #2





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

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


Pokaż jak wygląda procedura będzie łatwiej.
Go to the top of the page
+Quote Post
Koxcon
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2015

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


  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. //
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




znajdz 10 roznic
b
B


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Koxcon
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2015

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


Ok, poprawiłem, ale nadal występuje ten sam błąd.
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Select kolumna into zmienna...
Patrzyłeś w dokumentację na skladnię?


--------------------
Go to the top of the page
+Quote Post
Koxcon
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2015

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


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
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 08:10