Im получение ошибки для моей хранимой процедуры... любая идея, как ее решить?
ПРОЦЕДУРА:
CREATE OR REPLACE PROCEDURE prc_medic_check_status(v_task_id IN VARCHAR, v_request_id IN VARCHAR, v_task_desc IN VARCHAR, v_task_status IN VARCHAR) IS v_task_id task.task_id%TYPE;
v_request_id task.request_id%TYPE;
v_medical_id Varchar(30);
v_medical_status Varchar(30);
BEGIN
SELECT request_id INTO v_request_id
FROM Request
WHERE request_type = "Medical";
SELECT task_id INTO v_task_id
FROM task
WHERE request_id = v_request_id ;
SELECT medical_status INTO v_medical_status
FROM Medical m,
medicalRequest mr,
Request r
WHERE mr.request_id = r.request_id
AND mr.medical_id = m.medical_id;
IF (v_medical_status = "Available") THEN
UPDATE Task
SET task_status = "Done"'enter code here
WHERE request_id = v_request_id;
DBMS_OUTPUT.PUT_LINE('Medical Task Done');
ELSE DBMS_OUTPUT.PUT_LINE('Medical Task Not Done');
DBMS_OUTPUT.PUT_LINE('Due To The Medical Product Is Currently Not Available');
END IF;
END;
/
Ваши переменные параметра определяются как локальная переменная в хранимой процедуре, поэтому ошибка. Обычно мы используем p_ * для передачи параметров, поэтому я настоятельно рекомендую вам определить вашу хранимую процедуру, как показано ниже:
CREATE OR REPLACE PROCEDURE prc_medic_check_status(p_task_id IN VARCHAR, p_request_id IN VARCHAR, p_task_desc IN VARCHAR, p_task_status IN VARCHAR)
Затем измените имена новых параметров в запросе:
SELECT task_id INTO v_task_id
FROM task
WHERE request_id = p_request_id ;