2015-02-07 18 views
0

所以首先我需要創建一個表(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; 

我在SELECT語句「缺失或無效選項」得到一個錯誤。

我已經改變了

SET num_views = (select count(*) from userpermissions); 

要:

SELECT num_views = count(*) from userpermissions WHERE UserName; 

,並宣佈NUM_VIEWS這樣

CREATE or REPLACE FUNCTION user_documents_func (UserName varchar2, num_views int) 

現在我得到的錯誤 「FROM關鍵字未找到預期」

+0

返回「未找到用戶名」並將其打印出來有區別。 – 2015-02-07 15:52:29

回答

0

您需要d eclare首先變量,然後分配它。

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; 
+0

我已經聲明並沒有得到:遇到符號「DECLARE」當期待以下之一時: 開始函數編譯指示過程子類型<標識符> 當前光標刪除 存在以前的外部語言 – user3495658 2015-02-07 16:05:00

相關問題