PL / SQL匿名块已完成,未显示任何结果

时间:2013-11-12 04:29:46

标签: oracle stored-procedures plsql

当我执行该过程时,除了以下消息之外会出现第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消息。

3 个答案:

答案 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