ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
1275
1275
EMPFEHLEN
-
Hallo!
Wie kann ich mit einer SQL-Abfrage auf die Konstante PI zugreifen (unter Oracle) um z.B. Berechnungen damit durchzuführen? Also z.B.
select tab.a*pi from tab;
Der Weg atan(1)*4 statt pi zu verwenden geht zwar, ist aber nicht sehr elegant.
.Der Glückliche phantasiert nie. (Sigmund Freud)
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)
Daraus folgt: Die Genie's sind nicht glücklich.
-
27.07.04 22:39 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo!
Du könntest in Oracle die Java Klasse java.lang.Math verwenden. Dort findest du alle möglichen Mathematischen Konstanten (natürlich nur angenähert
)
Gruß Tom
-
Wie kann ich denn in SQL auf Kava-Klassen zugreifen? Kannst du mir ein Beispiel für ein SQL-Statement(mit PI) nennen?
Der Glückliche phantasiert nie. (Sigmund Freud)
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)
Daraus folgt: Die Genie's sind nicht glücklich.
-
28.07.04 09:18 #4
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo!
Kein Problem:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
create or replace package oracle_test as function return_pi return number as language java name 'oracle_test.return_pi() return double'; end oracle_test; / create or replace and compile java source named "oracle_test" as public class oracle_test extends Object{ public static double return_pi(){ return java.lang.Math.PI; } } / select oracle_test.return_pi PI from dual; Ausgabe: PI ----------------- 3,14159265
Gruß Tom
-
das ist aber nicht mehr wirklich SQL - das ist eher Oracle-SQL.
aber es gibt auch die SQL-Funktion PI(). Sollte überall funktionieren und braucht kein Java (nichts gegen Java - aber das ist mit Artillerie nach Spatzen geschossen).
Aus dem MySQL Handbuch:
Code :1 2 3 4 5
PI() Returns the value of PI. The default number of decimals displayed is five, but MySQL internally uses the full double-precision value for PI. mysql> SELECT PI(); -> 3.141593 mysql> SELECT PI()+0.000000000000000000; -> 3.141592653589793116
Geändert von squeaker (28.07.04 um 09:23 Uhr)
-
28.07.04 09:21 #6
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo!
Frank wollte aber doch eine Oracle Lösung (siehe erster Post)
Gruß Tom
-
Sogar Oracle kann SQL

select tab.a*pi() from tab;
sollte also eigentlich funktionieren.
-
28.07.04 09:29 #8
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo!
Also meine Oracle Version:
Oracle9i Release 9.2.0.3.0 - Production
JServer Release 9.2.0.3.0 - Production
sagt dazu:
Code :1 2 3 4 5
SQL> select pi() from dual; select pi() from dual; * Fehler in Zeile 1: ORA-00904: "PI" : invalid identifier
Gruß Tom
-
28.07.04 09:31 #9
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo!
Denke ich nicht, dass macht so gut wie gar nix aus, da in Oracle die JVM fest integriert ist. Aussderm könnte man ja, wenn das jeweilige statement einer Optimierung bedarf ganz einfach eine StoredProcedure anlegen wleche nur einmal den Funktionsaufruf "return_pi" durchführt diesen Wert zwischenspeichert und dann immer den aus dem Zwischenspeicher verwendet.(nichts gegen Java - aber das ist mit Artillerie nach Spatzen geschossen).
Gruß Tom
-
Erstaunlich, dass Oracle das nicht kann. Dann entschuldige bitte die falsche Kritik.
-
Danke für die Antworten.
Ganz schön umständlich in Oracle. Da ist meine ursrpünliche Lösung 4*atan(1) gar nicht so schlecht.
.Der Glückliche phantasiert nie. (Sigmund Freud)
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)
Daraus folgt: Die Genie's sind nicht glücklich.
-
30.07.04 16:10 #12
- Registriert seit
- Mar 2004
- Ort
- Tiefste Provinz
- Beiträge
- 304
Rein aus Interesse:
Gesetzt den Fall, man arbeitet mit einer DB die kein PI() versteht und ebenso vorausgesetzt man ist kein Mathematik-Purist, was spricht dagegen, einfach Pi als Wert '3.1415' zu verwenden, bzw. wenns genauer sein muss, dann eben '3.1415926535897932384626433832795'?
Das wäre jedenfalls mein erster Gedanke gewesen, noch bevor ich auf die Idee 4*ATAN(1) gekommen wäre.
Falls ihr diesen Ansatz zu unwissenschaftlich findet, dann hab' ich nix gesagt...
Grüße,
Martin
-
Hallo,
Oracle liefert tatsächlich kein PI mit. Dafür erhält man die wunderbare Möglichkeit, selber Funktionen zu erstellen:
create or replace function pi return number as
begin
return 3.14159265359;
end;
/
SQL> select 3 * pi from dual;
3*PI
---------
9,424778
So einfach kann das Leben mit Oracle sein!Grüße aus Hamburg
Movera
Ähnliche Themen
-
URL ermitteln
Von thco im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 01.01.09, 14:00 -
Typ ermitteln
Von flashray im Forum JavaAntworten: 4Letzter Beitrag: 12.11.07, 16:40 -
Wan IP ermitteln
Von Xo-mate im Forum .NET Web und KommunikationAntworten: 2Letzter Beitrag: 31.07.06, 09:36 -
IP ermitteln
Von Sircoly im Forum C/C++Antworten: 1Letzter Beitrag: 01.05.06, 22:00 -
URL ermitteln... nur Wie ?
Von Sealtuagn im Forum PHPAntworten: 6Letzter Beitrag: 06.07.05, 13:23





Zitieren

Login




