Итак, сначала мне нужно создать таблицу (UserPermissions):Попытка получить количество документов имя пользователя может просмотреть
CREATE TABLE UserPermissions
(
Document varchar2(15),
UserName varchar(15)
);
INSERT INTO UserPermissions
Values('Policy', 'SYSTEM');
INSERT INTO UserPermissions
Values('Menu', 'JDOW');
INSERT INTO UserPermissions
Values('W2', 'USAM');
INSERT INTO UserPermissions
Values('Permissions', 'SYSTEM');
INSERT INTO UserPermissions
Values('W2', ‘JDOW');
INSERT INTO UserPermissions
Values('Form 1040', 'USAM');
INSERT INTO UserPermissions
Values('Policy', 'JDOW');
INSERT INTO UserPermissions
Values('W2', 'SYSTEM');
Тогда напиши хранимую функцию PL/SQL, который принимает имя пользователя в качестве входных данных и возвращает номер документов, которые пользователь имеет разрешения для просмотра. Если имя пользователя отсутствует в таблице, ваша процедура должна вернуться: «Пользователь не найден». До сих пор это то, что у меня есть:
CREATE or REPLACE FUNCTION user_documents_func (UserName varchar2)
RETURN int AS
num_views INT;
BEGIN
SET num_views = (select count(*) from userpermissions);
IF num_views > 0 THEN
RETURN UserName || ' can view ' || num_views || ' document(s).';
ELSE
Dbms_output.put_line('Username not found!');
END IF;
END;
/
SET SERVEROUTPUT ON;
Я получаю сообщение об ошибке на ЗЕЬЕСТ «отсутствует или недействительный вариант».
Я изменил
SET num_views = (select count(*) from userpermissions);
To:
SELECT num_views = count(*) from userpermissions WHERE UserName;
и объявил NUM_VIEWS таким образом
CREATE or REPLACE FUNCTION user_documents_func (UserName varchar2, num_views int)
Сейчас я получаю сообщение об ошибке "FROM ключевое слово не найдено, где ожидается"
Существует разница между возвратом «Имя пользователя не найдено» и его печать. –