sql >> Database teknologi >  >> RDS >> Oracle

Thousand Seperator funktion i oracle?

Din funktion vil gå ind i en uendelig LOOP og kommer aldrig ud af den. Selvom den kompilerer, betyder det ikke, at funktionen ville fungere fint, da problemet vil opstå under kørslen.

WHILE-tilstanden er altid TRUE, og tælleren stiger aldrig, da funktionen aldrig går ind i IF-tilstanden.

Du har indstillet tæller :=2 og derefter din HVIS tilstand er:

Hvordan kunne det nogensinde være sandt? 2 er aldrig større end 2 , derfor øges tælleren aldrig , da du har det inde i IF-END IF blokere.

Når du udfører funktionen, kommer den aldrig ud af den uendelige løkke.

Kommer til dit behov,

Hvorfor vil du genopfinde hjulet, når Oracle allerede giver dig tusindseparatoren.

Fra dokumentation,

  • Element :G

  • Eksempel:9G999

  • Beskrivelse :Returnerer gruppeseparatoren i den angivne position (den aktuelle værdi af parameteren NLS_NUMERIC_CHARACTER). Du kan angive flere gruppeseparatorer i en talformatmodel.

For eksempel,

SQL> VÆLG TO_CHAR(sal,'999G999') FROM emp;TO_CHAR(-------- 800 1.600 1.250 2.975 1.250 2.850 2.450 3.000 5.000 1.000 1.1000 1,000 1,000 1,000 1,000 /kode>

Hvis du vil have funktionsnavnet til at være det samme som SQL Server funktion, så skal du bare oprette en brugerdefineret funktion i Oracle-databasen med samme navn. Logikken ville være den samme som ovenstående forespørgsel.

For eksempel,

SQL> OPRET ELLER ERSTAT FUNKTION NumericFormat( 2 col NUMBER) 3 RETURN VARCHAR2 4 AS 5 o_num VARCHAR2(20); 6 BEGIN 7 o_num:=TO_CHAR(col,'999G999'); 8 RETURN o_num; 9 SLUT; 10 /Funktion oprettet.SQL>SQL> sho errIngen fejl.SQL> 

Lad os udføre funktionen :

SQL> VÆLG NumericFormat(sal) FROM emp;NUMERICFORMAT(SAL)------------------------------------- ---------------- 800 1.600 1.250 2.975 1.250 2.850 2.450 3.000 5.000 1.500 1.100 950 3.000 1.30014 rækker valgt.SQL> 


  1. ORACLE - regexp_substr for at returnere nulværdier

  2. Vil du slette flere rækker ved hjælp af id'er?

  3. Hvordan returnerer man tilpassede tabeltyper fra Npgsql og lagrede procedurer?

  4. Forskellen mellem hvor og og klausul i join sql-forespørgsel