Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pemformatan angka di Oracle menggunakan TO_CHAR

Pastikan Anda menggunakan tipe data angka dengan skala dan presisi yang sesuai dengan data daripada menggunakan NUMBER tanpa skala dan presisi. Jika Anda akan menyimpan dolar/euro/pounds/dll. lalu Produk Dunia Bruto adalah dari urutan $100.000.000.000 pada tahun 2014. Mari kita asumsikan bahwa Anda tidak akan berurusan dengan lebih dari ini maka kolom mata uang Anda dapat:

NUMBER(17,2)

Jika Anda mendapatkan nilai yang lebih besar dari itu maka Anda perlu melakukan pemeriksaan kewarasan pada data Anda dan berpikir apakah jumlah yang lebih besar dari produk bruto dunia masuk akal. Jika Anda akan menyimpan nilai sebagai, misalnya, Yen atau dolar Zimbabwe, maka sesuaikan skalanya dengan tepat.

Anda bahkan dapat mendefinisikan sub-tipe dalam sebuah paket sebagai:

CREATE PACKAGE currencies_pkg IS
  SUBTYPE currency_type IS NUMBER(17,2);

  FUNCTION formatCurrency(
    amount IN CURRENCY_TYPE
  ) RETURN VARCHAR2;
END;
/

Dan kode Anda untuk memformatnya dapat berupa:

CREATE PACKAGE BODY currencies_pkg IS
  FUNCTION formatCurrency(
    amount IN CURRENCY_TYPE
  ) RETURN VARCHAR2
  IS
  BEGIN
    RETURN TO_CHAR( currency_value, 'FM999999999999990D00' );
  END;
END;
/

Kemudian jika Anda mereferensikan sub-tipe itu dalam prosedur/paket tersimpan Anda, Anda tidak akan dapat melebihi ukuran maksimum tipe data mata uang tanpa pengecualian yang dinaikkan. Model format untuk menampilkan nilai hanya perlu didefinisikan di satu tempat dan karena input terbatas pada sub-jenis mata uang, maka fungsi pemformatan tidak akan pernah melebihi skala/presisi yang ditetapkan dan tidak dapat menampilkan # s.

CREATE PROCEDURE your_procedure(
  in_value1 IN ACCOUNTS_TABLE.ACCOUNT_BALANCE%TYPE,
  in_value2 IN ACCOUNTS_TABLE.ACCOUNT_BALANCE%TYPE
)
IS
  v_value CURRENCIES_PKG.CURRENCY_TYPE;
BEGIN
  -- Do something
  v_value := in_value1 + in_value2;
  -- Output formatted value
  DBMS_OUTPUT.PUT_LINE( CURRENCIES_PKG.formatCurrency( v_value ) );
END;
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menentukan tipe database untuk koneksi JDBC yang diberikan?

  2. instal cx_Oracle untuk python

  3. Jelaskan Plan Cost Pain Point

  4. Kesalahan Oracle.DataAccess

  5. Layanan Data Oracle REST apex_pu