我的重载函数光标 PLS-00103 中出现错误



创建表mm_student (SID 编号 (8,0( 约束PK_mm_student_sid主键 约束NN_mm_student_sid不为空, SNAME VARCHAR2(50( 默认"未知" 约束NL_mm_student_sname为空, 性别字符(1( 约束CK_mm_student_gender_MFN 检查(性别在("M","F","N"(( 约束NN_mm_student_gender不为空, EDATE 日期 默认系统日期 约束NN_mm_student_edate不为空(;

创建表mm_course (CID 字符(8( 约束PK_mm_course_cid主键 约束NN_mm_course_cid不为空, 别名VARCHAR2(50( 约束NL_mm_course_cname为空, 位置 VARCHAR2(50( 约束NL_mm_course_location为空, ccost编号(6,2( 默认值 575.00 约束NL_mm_course_ccost为空(;

创建表mm_grade (SID 编号(8,0( 约束NN_mm_grade_sid不为空, 约束FK_mm_grade_sid外键(SID(引用mm_student(SID(, CID 字符(8(
约束NN_mm_grade_cid不为空, 约束FK_mm_grade_cid外键(CID(引用mm_course(CID(,
标记编号(5,2( 约束CK_mm_grade_range 检查(标记在 0 到 100 之间( 约束NN_mm_grade_mark不为空, 约束PK_mm_grade主键(SID、CID((;

CREATE OR REPLACE FUNCTION FN_Show_Course_Name_And_Mark
(P_SID NUMBER)
RETURN VARCHAR2
AS
V_CNAME VARCHAR2(50);
V_MARK NUMBER(5,2);
V_OUTPUT VARCHAR2(1500);
CURSOR C_CNAMES IS SELECT C.CNAME, G.MARK
FROM mm_course C, mm_grade G 
WHERE G.SID = P_SID AND
G.CID = C.CID;
BEGIN
OPEN C_CNAMES;
FETCH C_CNAMES INTO V_CNAME, V_MARK;
IF C_CNAMES %NOTFOUND THEN
V_OUTPUT := 'The Student' ||TO.CHAR(P_SID)||'did not take any courses';
ELSE 
WHILE C_CNAMES %FOUND LOOP
V_OUTPUT := V_OUTPUT || V_CNAME||'##'||TO.CHAR(V_MARK)||'##';
FETCH C_CNAMES INTO V_CNAME, V_MARK;
END LOOP;
END IF;
CLOSE C_CNAMES;
RETURN V_OUTPUT;
END FN_Show_Course_Name_And_Mark;
/
SHOW ERRORS;

行/列错误


16/37 PLS-00103:预期出现以下情况之一时遇到符号"TO": ( - + 案例模组新空 继续 平均计数 当前最大最小值 前 SQL 标准差和 所有合并时间时间戳间隔日期的超差执行 管

函数名称是TO_CHAR,而不是TO.CHAR

最新更新