Sql 尝试获取用户名可以查看的文档数
因此,首先我需要创建一个UserPermissions表:Sql 尝试获取用户名可以查看的文档数,sql,function,select,count,Sql,Function,Select,Count,因此,首先我需要创建一个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
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;
SELECT语句缺少或选项无效时出错
我变了
SET num_views = (select count(*) from userpermissions);
致:
并以这种方式声明num_视图
CREATE or REPLACE FUNCTION user_documents_func (UserName varchar2, num_views int)
现在,我从关键字not found中得到错误,您需要首先声明变量,然后分配它
DECLARE @num_views int; // thought as sql-server
BEGIN
SELECT @num_views = count(*) from userpermissions WHERE UserName LIKE input_var ;
IF @num_views > 0 THEN
RETURN UserName || ' can view ' || num_views || ' document(s).';
ELSE
Dbms_output.put_line('Username not found!');
END IF;
返回用户名not found(未找到)和打印用户名之间存在差异。我已输入了declare(声明)和not getting(未获取):在预期以下情况之一时遇到了符号declare(声明):begin function pragma过程子类型current cursor delete exists Previous external language
DECLARE @num_views int; // thought as sql-server
BEGIN
SELECT @num_views = count(*) from userpermissions WHERE UserName LIKE input_var ;
IF @num_views > 0 THEN
RETURN UserName || ' can view ' || num_views || ' document(s).';
ELSE
Dbms_output.put_line('Username not found!');
END IF;