- एक स्पेस है कीवर्ड से . के बाद गायब तत्काल तत्काल विवरण में।
- तत्काल निष्पादित करें कथन में वाक्यविन्यास त्रुटि है . आप INTO . को याद कर रहे हैं खंड।
- आप एक लूप के लिए कर्सर के अंदर तत्काल निष्पादन का उपयोग नहीं कर सकते . मूल रूप से, आप कुछ भी नहीं लौटा रहे हैं उपरोक्त बिंदु 2 में उल्लिखित तत्काल कथन निष्पादित करें।
- पुनरावृत्ति सिंटैक्स लूप . के लिए सही नहीं। वाक्य रचना
FOR r IN 1..COUNT()
. है ।
अपना कोड सुधारने के बाद, यह इस तरह दिखेगा:
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.
तो, बिना किसी त्रुटि के संकलित फ़ंक्शन . आइए निष्पादित करें इसे देखें और आउटपुट . देखें :
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>