0
workerId 및 prjId를 사용하고 작업자가 프로젝트에서 작업 한 총 시간을 반환하는 PL/SQL 함수 이름 hoursWorked를 작성하려고합니다.동일한 테이블 내에서 합산하기 위해 PL/SQL에서 함수 쓰기
표라는 PROJECTHOURS
WORKERPRJID | WORKERID | PRJID | TOTHOURS | CDATE
---------- ---------- ---------- ---------- ---------
1 1 1 10 1-JAN-14
2 1 1 7 2-JAN-14
3 1 1 6 4-JAN-14
4 2 1 5 11-JAN-14
5 2 1 9 15-JAN-14
6 2 1 7 13-JAN-14
7 1 2 5 11-JAN-14
8 2 2 9 15-JAN-14
9 2 2 7 13-JAN-14
나는 다음과 같은 시도 : 내가 뭐하는 거지에 관한
틀림CREATE OR replace PROCEDURE Hoursworked (j IN NUMBER,
n IN NUMBER)
IS
hours_worked projecthours.tothours%TYPE := 0;
BEGIN
SELECT workerid,
prjid,
SUM(tothours)
INTO hours_worked
FROM projecthours
WHERE workerid = j
AND prjid = n
GROUP BY j,
n;
RETURN hours_worked;
END;
SQL> show errors;
Errors for PROCEDURE HOURSWORKED:
LINE/COL ERROR
-------- -----------------------------------------------------------------
6/1 PL/SQL: SQL Statement ignored
6/52 PL/SQL: ORA-00947: not enough values
12/1 PL/SQL: Statement ignored
12/1 PLS-00372: In a procedure, RETURN statement cannot contain an
expression
내가 일반적으로 SQL과 매우 경험이다, 그래서 어떤 통찰력은 매우 환영합니다 잘못된.
정말 감사보다 더 매개 변수 이름을 적어주세요. 함수를로드 할 때 여전히 오류가 발생합니다. 12/5 PLS-00372 : 프로 시저에서 RETURN 문에 표현 을 포함 할 수 없습니다. 그러면 임시 테이블에서 원하는 것을 지정해야한다고 생각합니까? –
@ dan.mi.sun 내 편집을 확인하십시오. 절차에 대한 반품은 필요하지 않습니다. – Sathya
SQL> call Hoursworked (1,1,1); 결과 : ORA-06577 : 바인드 변수가 아닌 출력 매개 변수 이것이 어떻게 호출되는지 명확히 할 수 있습니까? –