当我执行该过程时,除了以下消息之外会出现第n个并且不显示任何不应该出现的输出:匿名块已完成
我试过set serveroutput on size 50000
,但没有任何变化。
这是我的PL / SQL程序,不确定我是否正确。
CREATE OR REPLACE PROCEDURE verify AS
empnum NUMBER;
empname VARCHAR2(50);
fail EXCEPTION;
BEGIN
SELECT employee.e#, employee.name INTO empnum, empname
FROM employee
JOIN driver ON driver.e# = employee.e#
JOIN mechanic ON mechanic.e# = driver.e#
WHERE rownum = 1;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('ok');
RAISE fail;
END verify;
/
我正在尝试使用sql语句实现以下结果:
SELECT employee.e#, employee.name
FROM employee
JOIN driver ON driver.e# = employee.e#
JOIN mechanic ON mechanic.e# = driver.e#
WHERE rownum = 1;
因此,如果有任何类似的记录,它将显示员工姓名和数字。如果找不到类似的记录,它将显示ok
消息。
答案 0 :(得分:0)
添加dbms_out_put.put_line(empnum || empname); 在EXCEPTION之前。 试试吧/
答案 1 :(得分:0)
您只是将列值选择到变量中而不显示它们。在Select语句之后使用DBMS_OUTPUT.put_line('Empnum: '|| empnum||' Empname: '||empname);
。
答案 2 :(得分:0)
您能否表示您曾经使用过的FAIL变量 提高例外。我们可以在不使用此变量的情况下完成。这个 是参考程序.Plz尝试让我们知道它是否有效。感谢
CREATE or REPLACE PROCEDURE av_sp_test(salary_var_1 in number)
AS
name_var avrajit.name%type;
salary_var avrajit.salary%type;
fail exception;
BEGIN
SELECT name,salary into name_var,salary_var from avrajit
WHERE salary=salary_var_1;
dbms_output.put_line('name is'||' '||name_var||' '||'salary is'||' '||salary_var);
EXCEPTION WHEN no_data_found THEN
dbms_output.put_line('OK');
END av_sp_test;
--------------------------------------------------
I have taken an input variable just to show diffrenet criterias.
begin
av_sp_test(1000);
end;
---------------------------------------------------
name is Sushil salary is 1000
Statement processed.
0.01 seconds
---------------------------------------------------
begin
av_sp_test(2000);
end;
---------------------------------------------------
OK
Statement processed.
0.00 seconds