--函數[in out 參數] create or replace function get_test(m_id in number, str1 out varchar2) --參數不需要類型長度 return varchar2 is str2 varchar2(10); --變量需要類型長度 begin select t.ename, t.job into str1, str2 from scott.emp t where t.empno = m_id; return str2; end get_test; --調用函數[位置表示法] declare s1 varchar2(10); s2 varchar2(10); s3 number(30) default 7521; --default 默認值 begin s3:=7566; s2 := get_test(s3, s1);--參數次序 dbms_output.put_line(s1 || ' ' || s2); end; --調用函數 [名稱表示法] declare s1 varchar2(10); s2 varchar2(10); begin s2 := get_test( str1=>s1,m_id=>7521); --名稱的對應關系,次序並不重要 dbms_output.put_line(s1 || ' ' || s2); end;
--存儲過程1 create or replace procedure get_test1(m_id in number, str1 out varchar2) --參數不需要類型長度 is begin select t.ename into str1 from scott.emp t where t.empno = m_id; end get_test1; --調用 declare s1 varchar2(100); begin get_test1(7521, s1); dbms_output.put_line(s1); end;
create or replace procedure get_test2(m_id in number) is str1 varchar2(100); --變量在is後面定義 begin select t.ename into str1 from scott.emp t where t.empno = m_id; dbms_output.put_line(str1); end; --sql窗口執行 begin get_test2(7521); end; --在命令窗口的執行 EXECUTE get_test2(7521);