CREATE PROCEDURE Pname(in_empno IN NUMBER out_name OUT VARCHAR2)
AS
BEGIN
select EmpName into out_name from emptable where Empno = in_empno;
END Pname;
在上述过程中,如何检查 SELECT 查询是否在给定条件下成功执行?
CREATE PROCEDURE Pname(in_empno IN NUMBER out_name OUT VARCHAR2)
AS
BEGIN
select EmpName into out_name from emptable where Empno = in_empno;
END Pname;
在上述过程中,如何检查 SELECT 查询是否在给定条件下成功执行?
如果您想查看 out_name 参数的输出,请尝试如下
CREATE OR REPLACE PROCEDURE pname (in_empno IN NUMBER, out_name OUT VARCHAR2)
IS
BEGIN
SELECT empName
INTO out_name
FROM emptable
WHERE empno = in_empno;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
raise_application_error (
-20000,
'Unable to execute procedure because of: ' || SQLERRM
);
END pname;
此过程可以从 sql plus as 执行
var ret varchar2(512);
exec pname(2345,:ret);
print ret;
更新 1
如果您想在 sql 查询成功执行的情况下返回一个值,并且如果出现错误,则返回另一个值,然后执行
CREATE OR REPLACE PROCEDURE pname (in_empno IN VARCHAR2,
out_name OUT VARCHAR2,
returnval IN OUT NUMBER
)
IS
BEGIN
SELECT employee_name
INTO out_name
FROM employees
WHERE emp_number = in_empno;
returnval := 0;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
returnval := 1;
END pname;
并从 sql plus 调用该过程为
var ret varchar2(512);
var ret2 number;
exec pname(2346,:ret,:ret2);
print ret;
print ret2;
在这个例子中,我可以停止使用另一个输出变量来返回,对吗?并检查我的前端中的条件,例如“out_name”是否以某种方式返回 null 错误句柄,如果它返回值,它将以其他方式处理,哪一个是有效的?????使用另一个 out 变量Retvalue,或者这样做
CREATE OR REPLACE PROCEDURE pname (in_empno IN VARCHAR2, out_name OUT VARCHAR2)
IS
BEGIN
SELECT employee_name
INTO out_name
FROM employees
WHERE emp_number = in_empno;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
out_name := NULL;
END;
您可以使用该EXCEPTION
块来确定是否返回了行或是否发生了其他一些异常。尝试这个
BEGIN
SELECT EmpName into out_name from emptable where Empno = in_empno
EXCEPTION
WHEN NO_DATA_FOUND THEN
out_name := NULL;
END;