繁体   English   中英

PL/SQL 匿名块已完成但未显示结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM