在oracle 10g R2上进行实验时,以下代码不起作用,或者我不知道该怎么做。
我预计当我传递id时,此函数的行将从STUDENTS
表返回。
CREATE OR REPLACE FUNCTION OCT.GET_Student(ID_IN NUMBER) RETURN OCT.STUDENTS%ROWTYPE
IS
TYPE REC OCT.STUDENTS%ROWTYPE;
BEGIN
SELECT * INTO REC FROM OCT.STUDENTS WHERE STUD_ID=ID_IN
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERR'||SQLCODE);
END;
预期的输出将是数据库表中的一两行。
目前,我无法编译此功能。
错误返回
FUNCTION OCT.GET_STUDENT
On line: 3
PLS-00103: Encountered the symbol "OCT" when expecting one of the following:
( array limited new private range record VARRAY_ char_base
number_base decimal date_base clob_base blob_base bfile_base
table ref object fixed varying opaque sparse
The symbol "range" was substituted for "OCT" to continue.
注意我确实对表和模式具有适当的权限,并且创建了函数,但有错误。
请帮助我了解这里的问题。
最佳答案
CREATE OR REPLACE FUNCTION OCT.GET_Student(ID_IN NUMBER) RETURN OCT.STUDENTS%ROWTYPE
IS
REC OCT.STUDENTS%ROWTYPE;
BEGIN
SELECT * INTO REC FROM OCT.STUDENTS WHERE BCODE=ID_IN;
RETURN(REC); --- A FUNCTION SHOULD RETURN SOMTHING.
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERR'||SQLCODE);
RETURN(NULL); --- A FUNCTION SHOULD RETURN SOMTHING.
END;
在使用
ROWTYPE
定义变量时,我们无需指定关键字TYPE
..,因为它已经隐式为TYPE!
关于oracle - 无法编译此小型oracle 10g数据库功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22061640/