oracle 存儲過程 建表插值等


建表、插值的procedure

create or replace procedure CREATE_EMP is
v_createsql varchar2(2000);
v_insertsql varchar2(2000);
begin
  v_createsql := 'create table EMP (
                  employerid number(8) primary key not null,
                  employername varchar2(20) not null)';
                 
  v_insertsql := 'insert into EMP select 10000000,'||chr(39)||'Philippe'||chr(39)||' from dual';
  execute immediate v_createsql;
  execute immediate v_insertsql;
end;

注意,這里字符串中的單引號可以用chr(39)表示,另外oracle字符串拼接用||

一個簡單的procedure:

create or replace procedure EMP_COUNT
AS
V_TOTAL NUMBER(10);
begin
     select count(*) into V_TOTAL from EMP;
     Dbms_Output.put_line('雇佣總人數為: ' || V_TOTAL) ;
end;
 

執行procedure:

sql窗口中:

 

begin

  EMP_COUNT;

end;

 另外補充一下procedure和function的區別:

https://stackoverflow.com/questions/25419629/functions-vs-procedures-in-oracle

1、Oracle函數必須返回一個值,而存儲過程獲取返回值需要通過out,in out參數。

2、普通的sql語句可以直接調用函數,但是無法使用存儲過程。

3、function只能返回一個值,但是存儲過程可以不返回,返回一個或者返回多個。

4、函數一般用來計算,而存儲過程一般用來執行業務邏輯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM