因此,我有一个接受学生证并检查用户是否存在的函数。我创建了没有错误的函数,并试图将返回变量存储在这样的布尔值中并打印结果
SQL> DECLARE
2 tf BOOLEAN;
3 BEGIN
4 EXECUTE tf := valid_stud(5)
5 DBMS_OUTPUT.PUT_LINE(tf);
6 END;
7 /
但这给我一个错误。
第4行出现错误: ORA-06550:第4行,第9列: PLS-00103:预期以下情况之一时遇到符号“ TF”: :=。 (@%;立即 符号“。”被替换为“ TF”以继续。
我的功能是这个
CREATE OR REPLACE FUNCTION valid_stud(v_student_id NUMBER) RETURN BOOLEAN
IS
v_id NUMBER;
BEGIN
SELECT student_id
INTO v_id
FROM STUDENT
WHERE student_id = v_student_id;
IF SQL%FOUND THEN
RETURN TRUE;
END IF;
EXCEPTION
WHEN no_data_found THEN RETURN FALSE;
END valid_stud;
/
答案 0 :(得分:2)
这是演示如何执行此操作的演示。
样品表:
SQL> create table student (
2 student_id number
3 );
Table created.
功能:我删除了不必要的检查SELECT是否返回值;如果可以的话,很好。如果没有,它将引发异常。
SQL> create or replace function valid_stud (
2 v_student_id number
3 ) return boolean is
4 v_id number;
5 begin
6 select student_id into
7 v_id
8 from student
9 where student_id = v_student_id;
10
11 return true;
12 exception
13 when no_data_found then
14 return false;
15 end valid_stud;
16 /
Function created.
测试:
SQL> set serveroutput on
SQL> declare
2 tf boolean;
3 begin
4 tf := valid_stud(5);
5 if tf then
6 dbms_output.put_line('Student exists');
7 else
8 dbms_output.put_line('Student does not exist');
9 end if;
10 end;
11 /
Student does not exist
PL/SQL procedure successfully completed.
SQL>