나는 다음과 같은 PL/SQL 기능이 있습니다PL/SQL 명령을 계속 실행
CREATE OR REPLACE FUNCTION GETOVERUREN(v_user_id IN NUMBER, v_jaar IN NUMBER)
RETURN NUMBER
AS
v_resultaat number := 0;
v_min_uren_id number := 0;
v_max_uren_id number := 0;
BEGIN
SELECT MIN(UREN_ID) INTO v_min_uren_id FROM UREN WHERE JAAR_NR = v_jaar AND UREN_ID IN (SELECT UREN_ID FROM GEBRUIKER_UREN g WHERE g.USER_ID = v_user_id);
SELECT MAX(UREN_ID) INTO v_max_uren_id FROM UREN WHERE JAAR_NR = v_jaar AND UREN_ID IN (SELECT UREN_ID FROM GEBRUIKER_UREN g WHERE g.USER_ID = v_user_id);
DECLARE
v_subtotaal number := 0;
BEGIN
v_max_uren_id := v_max_uren_id +1;
WHILE v_min_uren_id < v_max_uren_id LOOP
SELECT SUM(OMAANDAG+ODINSDAG +OWOENSDAG +ODONDERDAG +OVRIJDAG +OZATERDAG +OZONDAG) INTO v_subtotaal FROM UREN WHERE UREN_ID = v_min_uren_id;
----------------------------------------------
FIXED: v_min_uren_id := v_min_uren_id +1;(FORGOT TO + THE LOOP ITSELF)
----------------------------------------------
v_resultaat := v_resultaat + v_subtotaal;
END LOOP;
RETURN v_resultaat;
END;
END;
The following sql command should give the following outcome:
SELECT GETOVERUREN(1,2013) FROM UREN; WHERE 1 is the userid and 2013 is the year
GETOVERUREN(1,2013)
-------------------
10.25
But instead it gives:
GETOVERUREN(1,2013)
-------------------
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
10.25
Up to 157 times (wich is the total of rows i have in my table.)
/* I는 함수 SQLDeveloper이 기능을 실행 중지 못해, 실행 및 유지 사용하십시오. 나는 반 시간 동안 아무런 결과도 기다리지 않았다. 내가 뭘 잘못 했니? */
달리기의 문제가 수정되었으므로 많은 결과를 얻었습니다.
는create or replace FUNCTION TESTING(v_user_id IN NUMBER)
RETURN NUMBER
AS
v_resultaat number := 0;
BEGIN
SELECT IS_ADMIN INTO v_resultaat FROM GEBRUIKER WHERE USER_ID = v_user_id;
return v_resultaat;
END TESTING;
이 함수는 값을 반환하지 않습니다,하지만이 값 X 그렇게 다시 GEBRUIKER에있는 행의 수를 반환 뭔가 잘못입니다 :
나 자신이처럼 보이는 예를 들어 함수를했습니다 하지만 나는 그것이 무엇인지 알아낼 수 없습니다.
while 루프가 있고 조건이 잘못되지 않아 루프가 나오지 않습니다. 두 번째 기능에서 무엇을 시도하고 있습니까? 너는 무엇을 기대하고 있니? –
두 번째 함수는 간단한 함수를 시도합니다. 이 함수는 출력하기 위해 고안되었습니다 : 0, 그러나 나는 4 번 0을 얻습니다. 첫 번째 함수에 관해서는 당신이 옳았습니다. 내가 할 수 있었던 가장 무서운 실수였습니다. 덕분에 당신이 주셔서 감사합니다 – user2919688