2012-10-05 79 views
1

我是pl/sql中的noobie。我正在嘗試使用pl sql來計算gpa。我創建了一個有值的成績表。計算gpa oracle pl sql

SSN    CNO   GRADE 
--------------- -------- ---------- 
55555   cs101    1 
55555   math101   4 
55555   bio101   1 
55555   cgdd101   3 
55555   swe203   3 
55555   eng101   3 
11111   bio101   4 
11111   cgdd101   4 
55555   cs101    1 
55555   math101   4 
55555   bio101   1 

我想用下面的pl sql函數來計算gpa,但是我得到以下錯誤。

55555   eng101   3 

36 rows selected. 

SQL> create or replace function get_count 
    2 return is 
    3 declare 
    4 v_count number; 
    5 begin 
    6 select count(*) into v_count from grade; 
    7 return grade; 
    8 
    9 end; 
10/

Warning: Function created with compilation errors. 

SQL> show errors 
Errors for FUNCTION GET_COUNT: 

LINE/COL ERROR 
-------- ----------------------------------------------------------------- 
2/8  PLS-00103: Encountered the symbol "IS" when expecting one of the 
     following: 
     <an identifier> <a double-quoted delimited-identifier> self 
     long double ref char time timestamp interval date binary 
     national character nchar 

回答

0

你的函數缺少返回的數據類型,例如:

create or replace function get_count 
return NUMBER is 
v_count number; 
... 

而且,你不需要declare

+1

它應該是'回報v_count;而不是''返回級;' –

0

嘗試這個

CREATE OR REPLACE FUNCTION GET_COUNT 
    RETURN NUMBER 
IS 
    V_COUNT NUMBER; 
BEGIN 
    SELECT COUNT (*) 
    INTO V_COUNT 
    FROM GRADE; 
    RETURN V_COUNT; 
END; 
+0

快速的問題。我何時知道何時使用聲明?它是否在一個程序中? – Programmer254

+0

如果塊需要任何本地聲明(例如變量),'DECLARE'用於在PL/SQL中啓動一個匿名塊。它不需要過程,函數或包,因爲聲明部分隱含在'BEGIN'之前。 –