INTO
在错误的地方;应该是
EXECUTE IMMEDIATE
:
SQL> CREATE OR REPLACE FUNCTION EMPTY_TABLE (table_name IN VARCHAR2)
2 RETURN NUMBER
3 IS
4 Is_empty NUMBER;
5 v_SQL VARCHAR (1000);
6 BEGIN
7 v_SQL :=
8 'SELECT CASE
9 WHEN EXISTS(SELECT 1 FROM '
10 || table_name
11 || ')
12 THEN 1
13 ELSE 0
14 END --> not here ...
15 FROM DUAL';
16
17 EXECUTE IMMEDIATE v_SQL INTO Is_empty; --> ... but here
18
19 RETURN Is_empty;
20 END EMPTY_TABLE;
21 /
Function created.
SQL> SELECT empty_table ('dept') FROM DUAL;
EMPTY_TABLE('DEPT')
-------------------
1
SQL> SELECT empty_table ('dept') FROM DUAL;