我正在寫一個簡單的存儲過程來檢索關於所有員工的信息,但是,如果傳遞參數,我會添加2個參數來檢索信息,只有一個員工。我的意圖是創建一個遊標,並在WHERE使用參數添加條件,但它現在不工作。你有什麼主意嗎?謝謝!如何在此過程的WHERE條件中使用Case子句?
- 第一個參數用於員工ID。
- 第二個參數用於提高薪水。
的程序是:
CREATE OR REPLACE PROCEDURE test6(
p_empid empleados.legajo%TYPE := NULL,
p_raise_salary empleados.sueldo_basico%TYPE := NULL)
IS
CURSOR c_emps
IS
SELECT legajo, apellido, nombre, fecha_alta, sueldo_basico,
(CASE
WHEN p_raise_salary IS NOT NULL THEN
sueldo_basico * p_raise_salary
ELSE
sueldo_Basico
END) aumento_sueldo_basico
FROM empleados
WHERE (legajo = p_empid AND fecha_alta IS NOT NULL)
OR fecha_alta IS NOT NULL;
BEGIN
FOR i IN c_emps
LOOP
DBMS_OUTPUT.PUT_LINE(
'NOMBRE: ' || i.apellido || ' ' || i.nombre || ' ' || i.legajo);
DBMS_OUTPUT.PUT_LINE(
'Antiguo Sueldo: ' || i.sueldo_basico);
DBMS_OUTPUT.PUT_LINE(
'Nuevo Sueldo: ' || i.aumento_sueldo_basico);
EXIT WHEN c_emps%NOTFOUND;
END LOOP;
END test6;
用於提高工資第二個參數是工作,但是當我的id參數添加值顯示當前所有員工的信息。
不熟悉Oracle,但會'WHERE(legajo = p_empid OR p_empid IS NULL)和(fecha_alta不是NULL);'工作? –
感謝您回覆賈斯汀。我嘗試過,但不工作! –
英語中的legajo和fetch_alta是什麼? – maSTAShuFu