新しいストアドプロシージャを定義しましたが、呼び出し中にエラーが発生します。
CREATE OR REPLACE PROCEDURE SCOTT.getempsal(
p_emp_id IN NUMBER,
p_emp_month IN CHAR,
p_emp_sal OUT INTEGER)
AS
BEGIN
SELECT EMP_SAL
INTO p_emp_sal
FROM EMPLOYEE_SAL
WHERE EMP_ID = p_emp_id
AND EMP_MONTH = p_emp_month;
END getempsal;
そしてそれを呼び出そうとしています:
getempsal(1,'JAN',OUT) --Invalid sql statement.
プロシージャにはoutパラメータが含まれているため、次のようにブロック内で呼び出す必要があります。
declare
a number;
begin
getempsal(1,'JAN',a);
dbms_output.put_line(a);
end;
単純なプロシージャ(たとえば、数値パラメータを使用して)は、次のように呼び出すことができます。
exec proc(1);
または
begin
proc(1);
end;