執行存儲過程成功沒有結果,採用 declare 定義,錯誤:字符串長度限制在範圍 (1...32767)

我們可以用兩種方式創建存儲過程

方式1

 

一:我們先創建一個存儲過程,這裏我們用的是 oracle中 用戶scott裏的emp(員工表)

create or replace procedure p_emp (p_ename in varchar2,outsalcomm out number) --in 輸入;out 輸出
as --也可以寫成 is
x number;
y number;
begin
select sal,nvl(comm,0) INTO x,y from scott.emp where ename=p_ename;--comm是獎金列,用nvl()函數對null值填充數字0
outsalcomm :=x+y;
end;
/

set serverout on; --別忘了 開啓輸出!
execute p_emp('SMITH');--如果不出結果,按以下方法執行

二:我們採用定義變量的方式
declare
inname varchar2(25);--須給範圍
outsalcomm number;
begin
inname := 'SMITH';
p_emp (inname,outsalcomm);
dbms_output.put_line(outsalcomm);--別忘了輸出
end;
/

方式2

create or replace procedure p_emp (p_ename in varchar2)
as
x number;
y number;
begin
select sal,nvl(comm,0) INTO x,y from scott.emp where ename=p_ename;
DBMS_OUTPUT.PUT_LINE(x + y);
end;
/
set serverout on;
execute p_emp('SMITH');

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章