I have stored procedure with input parameter of type number.
CREATE OR REPLACE PROCEDURE my_procedure (p_x number)
AS
I included exception handling code as below, but that do not handle following:
execute my_procedure ('sads')
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE('SQLERRM: ' || SQLERRM);
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('SQLERRM: ' || SQLERRM);
is there any way to change exception for bad arguments?
The error will happen when the procedure is invoked, not inside of the procedure so you can't capture the error as an exception within that procedure itself. A possible solution would be use an additional procedure that validates the arguments. In the example code below the procedure
so_arg_test.my_procedureaccepts a VARCHAR2 but it will only invokemy_procedure_hiddenif the argument actually is a number. For anything other it will raise a value error.