Я получаю сообщение об ошибке, в котором говорится, что я ввожу недопустимый номер, когда пытаюсь использовать процедуру, которую я сделал, для поиска и печати записей за определенный год.
Мне также нужно распечатать записи между двумя датами (например, с января 2016 года по декабрь 2016 года), и я не знаю, как это сделать в той же процедуре.
Я пытался изменить тип ввода параметра на VARCHAR и DATE, но они, похоже, тоже не работают
/*Procedure to search for sales by year*/
CREATE OR REPLACE PROCEDURE SalesReport(
search_year IN NUMBER
)
IS
-- Declare Cursor
CURSOR year_search_cursor IS
SELECT sp_invoice, sp_datesold, sp_saleprice, sp_addncost, sp_deposit, sp_total, sp_id, c_id, v_regno
FROM sales_purchases
WHERE sp_datesold LIKE '%' + search_year;
-- Declare ROW record pointer
sp_year_row year_search_cursor%ROWTYPE;
rec_output VARCHAR2(200); -- Output String
BEGIN
-- Column Headers
DBMS_OUTPUT.PUT_LINE('Invoice_No,'||'Date sold,'||'Sale Price $,'||'AddnCost,'||'Deposit,'||'Total,'||'SP_ID,'||'C_ID,'||'V_RegNo');
-- Fetching data from cursor into variables
FOR sp_year_row IN year_search_cursor LOOP
rec_output:=
sp_year_row.sp_invoice||','||
sp_year_row.sp_datesold||','||
sp_year_row.sp_saleprice||','||
sp_year_row.sp_addncost||','||
sp_year_row.sp_deposit||','||
sp_year_row.sp_total||','||
sp_year_row.sp_id||','||
sp_year_row.c_id||','||
sp_year_row.v_regno;
DBMS_OUTPUT.PUT_LINE(rec_output);
END LOOP;
END;
/
-- Get Input from User
ACCEPT search_year NUMBER PROMPT 'Enter search year: ';
-- Call the UPDATE_INV_SP Procedure and check stock amount status of item
EXECUTE SalesReport(&search_year);
Прямо сейчас, когда я пытаюсь запустить процедуру, используя 'EXECUTE SalesReport (& search_year);' Я просто получаю следующее сообщение об ошибке
Error starting at line : 1 in command -
BEGIN SalesReport(2015); END;
Error report -
ORA-01722: invalid number
ORA-06512: at "19421463.SALESREPORT", line 18
ORA-06512: at line 1
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.