[英]PL/SQL anonymous block completed with no result displayed
当我执行程序时,nth 会出现,除了以下消息并且不显示任何不应该出现的输出:匿名块已完成
我尝试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
消息。
添加 dbms_out_put.put_line(empnum||empname); 在例外之前。 试试看/
您只是将列值选择到变量中而不显示它们。 使用DBMS_OUTPUT.put_line('Empnum: '|| empnum||' Empname: '||empname);
就在 Select 语句之后。
您能否指出您用于引发异常的 FAIL 变量。 我们可以在不使用这个变量的情况下做到这一点。 这是参考程序。请尝试让我们知道它是否有效。 谢谢
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.