Tôi muốn kiểm tra chức năng pipelined của mình mà không cần tạo gói. Ví dụ sau đây được đơn giản hóa:PLS-00231: Chức năng có thể không được sử dụng trong SQL
DECLARE
FUNCTION testDC RETURN NCOL PIPELINED IS
BEGIN
PIPE ROW(5);
END;
BEGIN
FOR cur IN (select * from table (testDC())) LOOP
dbms_output.put_line('--> ');
END LOOP;
END;
Nhưng tôi nhận được lỗi này:
ORA-06550: line 7, column 7: pls-00231: function TESTDC may not be used in SQL
ORA-06550: line 7, column 7: PL/SQL: ORA-00904: : invalid identifier
ORA-06550: line 7, column 7: PL/SQL: SQL Statement ignored
cách tốt hơn để thử nghiệm những chức năng là gì?
Bạn đang cố gắng kiểm tra điều gì? Bạn chỉ muốn gọi hàm và in mũi tên của bạn cho mỗi hàng mà nó trả về? (Đó là một lần cho chức năng đó như bạn đã hiển thị nó) –
Có, tôi chỉ muốn gọi hàm và in mũi tên của bạn cho mỗi hàng nó trả về –
Hàm của bạn ('testDC') được khai báo riêng trong khối ẩn danh của bạn, vì vậy bất kỳ truy vấn nào bạn chạy (bao gồm bất kỳ truy vấn nào trong khối của bạn) sẽ không thể nhìn thấy nó. Đây là một trong những trường hợp mà chúng ta thấy sự tách biệt giữa ngữ cảnh SQL và PL/SQL. –