| PASS A TABLE NAME AS A PARAMETER IN PL/SQL? [message #329994] |
Fri, 27 June 2008 04:27  |
vlinh
Messages: 11 Registered: June 2008
|
Junior Member |
|
|
TABLE COURSE(
COURSE_NO NUMBER(38),
DESCRIPTION VARCHAR2(50),
COST NUMBER(9,2),
PREREQUISITE NUMBER(8)
)
CREATE OR REPLACE FUNCTION TOTAL_ROWS
(V_COST COURSE.COST%TYPE, V_TABLE USER_TABLES.TABLE_NAME%TYPE)
RETURN NUMBER
IS
V_RESULT NUMBER:=0;
BEGIN
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM '||V_TABLE||'WHERE COST= '||V_COST
INTO V_RESULT;
RETURN V_RESULT;
END;
.
/
DECLARE
NUM1 NUMBER;
BEGIN
NUM1:=TOTAL_ROWS(1195,'COURSE');
DBMS_OUTPUT.PUT_LINE('TOTAL ROWS:'||NUM1);
END;
.
/
when i execute this function, i have an error like this:
ERROR at line 1:
ORA-00933: SQL command not properly ended
ORA-06512: at "STUDENT.TOTAL_ROWS", line 7
ORA-06512: at line 4
how to solve this problem?
SORRY FOR MY ENGLISH.
[Updated on: Fri, 27 June 2008 04:33] Report message to a moderator
|
|
|
|
| Re: PASS A TABLE NAME AS A PARAMETER IN PL/SQL? [message #329995 is a reply to message #329994] |
Fri, 27 June 2008 04:32   |
 |
Michel Cadot
Messages: 68771 Registered: March 2007 Location: Saint-Maur, France, https...
|
Senior Member Account Moderator |
|
|
You should post this this way:
SQL> create TABLE COURSE(
2 COURSE_NO NUMBER(38),
3 DESCRIPTION VARCHAR2(50),
4 COST NUMBER(9,2),
5 PREREQUISITE NUMBER(8)
6 )
7 /
Table created.
SQL> CREATE OR REPLACE FUNCTION TOTAL_ROWS
2 (V_COST STUDENT.COST%TYPE, V_TABLE USER_TABLES.TABLE_NAME%TYPE)
3 RETURN NUMBER
4 IS
5 V_RESULT NUMBER:=0;
6 BEGIN
7 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM '||V_TABLE||'WHERE COST= '||V_COST
8 INTO V_RESULT;
9 RETURN V_RESULT;
10 END;
11 /
Warning: Function created with compilation errors.
SQL> sho err
Errors for FUNCTION TOTAL_ROWS:
LINE/COL
---------------------------------------------------------------------------------
ERROR
---------------------------------------------------------------------------------
0/0
PL/SQL: Compilation unit analysis terminated
2/9
PLS-00201: identifier 'STUDENT.COST' must be declared
Is your table COURSE or STUDENT?
Does STUDENT contains a COST column?
And don't put your title in UPPER case.
Regards
Michel
[Updated on: Fri, 27 June 2008 04:33] Report message to a moderator
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|