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

Hàm được lưu trữ trong Oracle - chuyển tên bảng làm tham số

  1. Có một khoảng trắng thiếu sau từ khóa FROM trong câu lệnh THỰC HIỆN NGAY LẬP TỨC.
  2. THỰC HIỆN NGAY LẬP TỨC câu lệnh có lỗi cú pháp . Bạn đang thiếu INTO mệnh đề.
  3. Bạn không thể sử dụng EXECUTE NGAY LẬP TỨC bên trong CURSOR FOR LOOP . Về cơ bản, bạn không trả lại gì từ câu lệnh thực thi ngay lập tức như đã đề cập trong điểm 2 ở trên.
  4. Cú pháp lặp lại cho LOOP không đúng. Cú pháp là FOR r IN 1..COUNT() .

Sau khi sửa mã của bạn, mã sẽ trông như thế này:

SQL> CREATE OR REPLACE TYPE TES_JML_OBJ IS OBJECT(JUMLAH NUMBER)
  2  /

Type created.

SQL> CREATE OR REPLACE TYPE TES_JML_TABLE IS TABLE OF TES_JML_OBJ
  2  /

Type created.

SQL> CREATE OR REPLACE
  2    FUNCTION jumlahBaris(
  3        namatabel VARCHAR2)
  4      RETURN tes_jml_table
  5    IS
  6      TABEL TES_JML_TABLE := TES_JML_TABLE();
  7      cnt NUMBER;
  8    BEGIN
  9      EXECUTE IMMEDIATE 'select count(*) as jumlah from ' || NAMATABEL INTO CNT;
 10      FOR R IN 1..CNT
 11      LOOP
 12        TABEL.EXTEND;
 13        TABEL(R) := TES_JML_OBJ(R);
 14        dbms_output.put_line(TES_JML_OBJ(R).jumlah);
 15      END LOOP;
 16      RETURN tabel;
 17    END;
 18    /

Function created.

SQL> SHO ERR
No errors.

Vì vậy, hàm được biên dịch không có lỗi . Hãy thực thi nó và xem đầu ra :

SQL> SET SERVEROUTPUT ON
SQL> SELECT JUMLAHBARIS('EMP') FROM DUAL;

JUMLAHBARIS('EMP')(JUMLAH)
--------------------------------------------------------------------------------
TES_JML_TABLE(TES_JML_OBJ(1), TES_JML_OBJ(2), TES_JML_OBJ(3), TES_JML_OBJ(4), TE
S_JML_OBJ(5), TES_JML_OBJ(6), TES_JML_OBJ(7), TES_JML_OBJ(8), TES_JML_OBJ(9), TE
S_JML_OBJ(10), TES_JML_OBJ(11), TES_JML_OBJ(12), TES_JML_OBJ(13), TES_JML_OBJ(14
))


1
2
3
4
5
6
7
8
9
10
11
12
13
14
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. PL / SQL:có lệnh nào để dừng hoàn toàn việc thực thi tập lệnh không?

  2. Tạo hoặc thay thế bảng trong Oracle pl / sql

  3. ORA-00942:bảng hoặc chế độ xem không tồn tại cho bảng và cột chữ hoa / thường

  4. chuyển đổi oracle blob sang loại xml

  5. Làm thế nào để nhiều hàng có thể được nối thành một trong Oracle mà không cần tạo một thủ tục được lưu trữ?