Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Routere detinute in trecut si in ...

Teii din fața casei

E-Mail in serie prin Excel si Out...

Modul alimentare rulou/jaluzea ex...
 Recuperare fișiere dupa form...

Aplicatii stress test RAM

Asigurare auto hibrid

Asus B550M - PC-ul nu porneste di...
 Tzanca Uraganu - Inconjurat de Fe...

explicatie montaj breadboard

3 Doors Down - Kryptonite

Semnalizati cand virati pe un dru...
 Succesiune - mostenire apartament...

Donez Siofor de 1000mg ( diabet t...

Izolatie intre parter si etaj

Hranirea pasarilor din orase -pro...
 

Procedura stocata in Navicat 11.x cu MariaDB

- - - - -
  • Please log in to reply
3 replies to this topic

#1
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Baza de date: MariaDB. Printre alte tabele, si una (hotels), care contine longitutindea si latitudinea fiecarei locatii.
Coordonatele GPS curente le stiu (am reusit sa le afisez printr-un alert la ecran; si se afiseaza correct).
Doresc sa afisez cele mai apropiate hoteluri de locatia in care sunt.

Am gasit asta:
CREATE FUNCTION distance (latA double, lonA double, latB double, LonB double)
	RETURNS double DETERMINISTIC
BEGIN
	SET @RlatA = radians(latA);
	SET @RlonA = radians(lonA);
	SET @RlatB = radians(latB);
	SET @RlonB = radians(LonB);
	SET @deltaLat = @RlatA - @RlatB;
	SET @deltaLon = @RlonA - @RlonB;
	SET @d = SIN(@deltaLat/2) * SIN(@deltaLat/2) +
	COS(@RlatA) * COS(@RlatB) * SIN(@deltaLon/2)*SIN(@deltaLon/2);
	RETURN 2 * ASIN(SQRT(@d)) * 6371.01;
END//


Acum, nu stiu cum sa fac asta (in Navicat)... In Functions, la new function, pot allege intre procedura (ceea am si facut) si function. Numai ca trebuie sa intoduc parametrii de rutinei si nu stiu ce sa pun acolo.

Daca trec de acest ecran, fara sa introduce nimic, si pun codul de mai sus, cand salvez (de exemplu cu numele de location), imi da eroare: 1303 - can't create a FUNCTION from within another stored routine.
Ce este gresit? Cum pot face sa functionezae asta?
Ma gandeam ca ulterior sa o pot apela aceasta procedura stocata in php.

Orice sfat e binevenit.
Multumesc

#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,189
  • Înscris: 24.02.2007
Pune un screenshot sa vedem unde ai scris interogarea.

Apoi, calcule de genul se fac folosind suportul oferit de baze de date pentru asta. Exemple pentru MariaDB: https://mariadb.com/...-functionality/, https://mariadb.com/...db/st_distance/

Daca nu e suficient, treci la o baza de date mai serioasa (Mysql si derivate au probleme cu carul).

Edited by dani.user, 22 January 2017 - 16:58.


#3
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Ales nu-s coordinate carteziene? Oare functioneaza si pt coordinate gps?

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,189
  • Înscris: 24.02.2007
st_distance se pare ca nu stie de coordinate sferice.

ST_Distance_Sphere in schimb pare a fi ce cauti.

Edited by dani.user, 22 January 2017 - 22:14.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate