Oracle 在Toad中调用存储过程
我定义了一个新的存储过程,但调用它时出错Oracle 在Toad中调用存储过程,oracle,stored-procedures,toad,Oracle,Stored Procedures,Toad,我定义了一个新的存储过程,但调用它时出错 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_
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);
或
只需编写执行过程的名称('provide_参数中的值','value of IN parameter',:k)
运行此语句时,弹出窗口会将参数设置为in out和数据类型。您将在另一个弹出窗口中看到输出。Toad是一个基于GUI的客户端工具,与SQL*Plus不同。所以,您可以直接查看该过程并从工具本身执行它;这将在数据网格中打印光标内容。还有一件有用的事情-您可以像这样使用输出光标:exec package_name.procedure_name('param','param2',:0),然后在数据网格中获得光标内容。
begin
proc(1);
end;