簡體   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