0
我必須編寫程序生成文件,線條是下一個內容: EMPLOYEE_ID,OLD_SALARY,NEW_SALARY 爲此,我寫了一個過程,提高薪水的給定dapartment,程序,產生該文件。現在,我的程序工作得很好,當我編譯一個程序時,它沒有任何錯誤。但問題是它的工作原理錯誤。當我執行它,我得到這個需要解決方案我的程序
108 12008 12008
109 9000 9000
110 8200 8200
111 7700 7700
112 7800 7800
113 6900 6900
OLD_SALARY柱和NEW_SALARY列是一樣的,並沒有提出來的。第二次完成後,列仍然是相同的,但工資在第一次執行後是4次。 我認爲問題出在我的光標上,但我不知道如何解決它。這裏是整個代碼:
CREATE OR REPLACE DIRECTORY dir_vezba AS '/home/oracle/vezba';
CREATE OR REPLACE PROCEDURE raise_salary
IS
v_deptno NUMBER:=100;
v_per NUMBER:=0.2;
BEGIN
UPDATE employees
SET salary=salary*(1+v_per)
WHERE department_id=v_deptno;
UPDATE employees
SET salary=salary*1.05
WHERE department_id=v_deptno AND employee_id IN (SELECT e.employee_id
FROM employees e JOIN employees m
ON (e.manager_id=m.employee_id));
END raise_salary;
/
SET VERIFY OFF
DECLARE
v_deptno NUMBER;
v_oldsalary employees.salary%TYPE;
v_newsalary employees.salary%TYPE;
v_filehandle UTL_FILE.FILE_TYPE;
v_body VARCHAR2(200);
v_line VARCHAR2(200);
v_head VARCHAR2(200);
v_report VARCHAR2(150);
CURSOR emp_cursor IS
SELECT employee_id, salary
FROM employees
WHERE department_id=v_deptno;
BEGIN
v_deptno:=extract_dep('POVECANJE_DEP.txt');
v_report:='IZVESTAJ'||TO_CHAR(SYSDATE, 'YY')||TO_CHAR(v_deptno)||'.log';
v_filehandle:=UTL_FILE.FOPEN('DIR_VEZBA', v_report, 'w');
UTL_FILE.PUTF(v_filehandle, 'Report generated on: '||SYSDATE||' for department: '||v_deptno);
UTL_FILE.NEW_LINE(v_filehandle);
UTL_FILE.NEW_LINE(v_filehandle);
v_head:='EMPNO OLD_SALARY NEW_SALARY';
UTL_FILE.PUTF(v_filehandle, v_head);
UTL_FILE.NEW_LINE(v_filehandle);
v_line:='=================================';
UTL_FILE.PUTF(v_filehandle, v_line);
UTL_FILE.NEW_LINE(v_filehandle);
FOR emp_rec IN emp_cursor
LOOP
v_oldsalary:=emp_rec.salary;
raise_salary;
v_newsalary:=emp_rec.salary;
v_body:=RPAD(emp_rec.employee_id,9,' ')||RPAD(v_oldsalary,14,' ')||RPAD(v_newsalary,10,' ');
UTL_FILE.PUTF(v_filehandle, v_body);
UTL_FILE.NEW_LINE(v_filehandle);
END LOOP;
UTL_FILE.FCLOSE(v_filehandle);
END;
/
如果有人知道解決此問題,請寫。謝謝...
請編輯您的問題標題,以便它包含有關問題的信息。 「對我的計劃需要解決方案」對於正在尋找解決方案的未來讀者來說絕對沒有任何意義。我們知道你需要一個解決方案,否則你不會在這裏發佈求助。你的頭銜應該解釋一些你想要解決的問題或你所問的問題。謝謝。 – 2014-10-30 19:23:01