2016-10-10 8 views
3

こんにちはすべて私はちょうどこのサイトについて語ったばかりで、私はいくつかの助けを使うことができました。 私はルールを読んで、私はコード賢明にやっていることを理解しています。私は先週Pl SQLを始めました。その前に、私は基本SQLを実行しました。しかし、今私は、私が作った機能を呼び出すことに固執しています:/私は愚かな気がします。それはかなりストレートフォワード関数であり、私はそれが正しいと確信しています私のSQLの先生は、それは一見一見良いと言ったが、彼女は私に機能を呼び出す方法を示していないと私は本当にそれが動作しているかどうかを見たい。pl SQL関数の問題を呼び出す

私は彼女がそれをしてください呼び出すために選択し、そのわずか2行の代わりEMPLOYEE_NOの使用を言って覚えて、私は基本的なSQLと関数を呼び出すと、PL dbms.outでSQLする方法を知っているが、私はここに空白を描きます私が作ったものを呼び出す方法をいくつか教えてください。私はあまりにもERDを添付しました。

(a)特定の従業員が作業しているさまざまなタスクタイプの合計数を計算して返します。

SHOW ERRORS 

CREATE OR REPLACE FUNCTION task_types(eno employee.employee_no%TYPE) 
    RETURN NUMBER IS 

    task_var task.task_type_no%TYPE; 


    BEGIN 
    SELECT COUNT(DISTINCT t.task_type_no) 
    INTO task_var 
    FROM employee e, task t, assignment a 
    WHERE e.employee_no = a.employee_no 
      AND a.task_id = t.task_id 
      AND e.employee_no = eno; 

    RETURN task_var; 

    END; 

エンティティ関係図:

the ERD

いただきありがとうございます:)

+0

MS SQL ServerまたはOracleを使用していますか? (PlsqlはOracleです) – jarlh

+0

ああ、間違ったタグを付けていただきありがとうございます。私はoracle iSQL * plusを使用しています –

答えて

3

をあなたはSQL

にあなたが知っていれば
select task_types(e.employee_no) as task_types 
from employee e; 

または、機能を使用することができます特定の従業員番号

select task_types(1) 
from dual; 

またはPLSQLで

begin 
    dbms_output.put_line(task_types(1)); 
end; 
/
0
select task_types(your_employee_id) from dual; 

your_employee_idはポストにあなたが言及した既存のIDまたは1を使用しています。

関連する問題