CREATE OR REPLACE FUNCTION employer_details_func
RETURN VARCHAR(20);
IS
e_name VARCHAR(20);
BEGIN
SELECT emp_name INTO e_name
FROM employees WHERE emp_no = '5';
RETURN e_name;
END employer_details_func;
При составлении выше программ я получаю эту ошибкуПолучение ошибки при компиляции функции PL/SQL
Ошибку (2,18): PLS-00103: Столкнутый символ "(" когда ожидается одно из следующих действий:. @%; является AUTHID в порядке кластера с помощью внешнего характера детерминированного parallel_enable конвейерного совокупности RESULT_CACHE
ОБНОВЛЕНИЯ:
CREATE OR REPLACE FUNCTION employer_details_func
RETURN VARCHAR2(20);
IS
e_name VARCHAR2(20);
BEGIN
SELECT emp_name INTO e_name FROM employees WHERE emp_no ='5';
RETURN e_name;
END employer_details_func;
Ошибка:
Error(2,19): PLS-00103: Encountered the symbol "(" when expecting one of the following: . @ % ; is authid as cluster order using external character deterministic parallel_enable pipelined aggregate result_cache
Что случилось с моим кодом? Пожалуйста, дайте мне знать.
Есть ли причина не использовать VARCHAR2? – halfbit
@halfbit no reason – ram
Тип данных параметров или возвращаемый тип данных функции должны быть неограниченными типами данных. То есть вам нужно указать максимальный размер. В вашем случае 'return varchar (20)' должен быть просто 'return varchar2'. Не используйте тип данных varchar. Хотя 'varchar' и' varchar2' являются синонимами, и сейчас нет никакой разницы между ними, их поведение может измениться в будущем - придерживаться 'varchar2'. Кроме того, учтите тот факт, что ваш запрос не может возвращать строки или возвращать более одной строки, создавая исключение «no_data_found» или «too_many_rows», соответственно. –