PL / SQL Store возвращает переменную функции в логической переменной - PullRequest
0 голосов
/ 03 декабря 2018

Итак, у меня есть функция, которая принимает идентификатор студента и проверяет, существует ли пользователь.Я создал функцию без ошибок, и я пытаюсь сохранить возвращаемую переменную в логическом виде и напечатать результат

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;
/

1 Ответ

0 голосов
/ 03 декабря 2018

Вот демонстрация, которая показывает, как это сделать.

Пример таблицы:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...