Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm Thousand Seperator trong oracle?

Hàm của bạn sẽ đi vào một LOOP vô hạn và sẽ không bao giờ thoát ra khỏi nó. Mặc dù nó được biên dịch, nhưng điều đó không có nghĩa là chức năng sẽ hoạt động tốt, vì sự cố sẽ xảy ra khi chạy.

Điều kiện WHILE luôn là TRUE và bộ đếm không bao giờ tăng, vì hàm không bao giờ chuyển sang điều kiện IF.

Bạn đã đặt counter :=2 và sau đó là điều kiện IF của bạn là:

Làm thế nào nó có thể là sự thật? 2 không bao giờ lớn hơn 2 , do đó bộ đếm không bao giờ tăng lên , vì bạn có nó bên trong IF-END IF khối.

Khi bạn thực thi hàm, nó sẽ không bao giờ thoát ra khỏi vòng lặp vô hạn.

Đáp ứng yêu cầu của bạn,

Tại sao bạn muốn phát minh lại bánh xe khi Oracle đã cung cấp cho bạn dấu phân tách hàng nghìn.

Từ tài liệu,

  • Phần tử:G

  • Ví dụ:9G999

  • Mô tả:Trả về vị trí đã chỉ định dấu phân tách nhóm (giá trị hiện tại của tham số NLS_NUMERIC_CHARACTER). Bạn có thể chỉ định nhiều dấu phân tách nhóm trong mô hình định dạng số.

Ví dụ:

SQL> SELECT 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,500
   1,100
     950
   3,000
   1,300

14 rows selected.

Nếu bạn muốn tên hàm giống với tên của SQL Server , sau đó chỉ cần tạo một hàm do người dùng định nghĩa trong cơ sở dữ liệu Oracle có cùng tên. Logic sẽ giống như truy vấn trên.

Ví dụ:

SQL> CREATE OR REPLACE FUNCTION 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  END;
 10  /

Function created.

SQL>
SQL> sho err
No errors.
SQL>

Hãy thực thi chức năng :

SQL> SELECT 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,300

14 rows selected.

SQL>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bỏ qua dấu và trong tập lệnh SQL chạy từ SQL Plus?

  2. Các dịch vụ khác nhau trong Oracle SOA liên quan với nhau như thế nào?

  3. Cách tạo quy trình lưu trữ PL / SQL với tham số trong cơ sở dữ liệu Oracle

  4. Cách tìm số dòng, tên thủ tục trong PL / SQL trong trường hợp xảy ra lỗi

  5. Làm thế nào để Chọn một chuỗi con trong Oracle SQL cho đến một ký tự cụ thể?