oracel存儲過程編寫 以及plsql存儲過程的debug


1、語法:

  create or replace procedure messagebackup_createTable       //此處存儲過程名稱不能超過30個字符

as  tableName varchar2(100);     //聲明變量

     tableCount  Number;

  thisYearMonth;

begin 

  thisYearMonth:=TO_CHAR(sysdate,'yyyyMM');       //給變量賦值使用   :=  

  tableName:='MESSAGEBACKUP_'||thisYearMonth;       //oracle大小寫敏感,盡量使用大寫;使用變量連接是使用符號  ||變量

  select count(1) into tableCount from user_tables  where table_name = tableName;   //如果上一行tableName的賦值使用的是小寫,這塊會出錯,明明已經建好了這個表但是查詢的時候還是0,缺又不能重新創建;   判斷當前用戶下是否有要創建的表,並將數量賦值給tableCount,select count(1) into tableCount from user_tables where table_name = tableName; 

  if tableCount=0  then 

  execute immediate 'create table '||tableName||'                               //execute immediate  立刻執行,如果當前存儲結構下邊用到當前創鍵的表格就不會報不存在的

  as select * from MESSAGEBUCKUP_TEMP where 1=2';               //復制表結構而不復制表數據的oracle寫法    如果需要新建很多表結構一樣的表,可以把基本表結構建立出來,然后復制這個表結構,這樣如果改了基本表結構就只需要修改基礎表結構,不夠用改存儲結構;

  execute immediate 'create index IDX_MSG_'||thisYearMonth||'_MOBILE'  on '||tableName||' (MOBILE)';   //在表tableName的Mobile字段建立索引

  EXECUTE IMMEDIATE 'create sequence MSGBAK_'||thisYearMonth||'_ID_SEQ       //建立sequence 主要是為了主鍵自增

  INCREMENT BY 1
  START WITH 1
  NOMAXVALUE
  NOCYCLE
  NOCACHE';


  EXECUTE IMMEDIATE 'create or replace trigger T_MSGBAK_'||thisMonth||'_ID           //建立觸發器為了表新增行的時候觸發給行的ID設置自增值
  before insert on '||tableName1||'
  for each row
  begin
    select MSGBAK_'||thisMonth||'_ID_SEQ.nextval into :new.id from dual;
  end;';         // 觸發器結束需要有分號  ;  也就是說在 ''號里邊的分號必須有不然會報錯;

  end if;     //結束一個if條件

  if  xxx then  xxxx   end if;     //另一個if條件

END messagebackup_createTable;    //結束這個存儲過程

2、執行存儲過程

  begin

    messagebackup_createTable;

  end;

3、plsql如何大小寫切換

  選中需要改變大小寫的文本單擊右鍵-->選項-->選擇大寫(小寫)

4、plsql存儲過程的debug

  登錄plsql選擇MyObject  --> procedure -->選中要debug的存儲過程單擊右鍵 --> test(測試)-->彈出窗點擊搜索那個圖片啟動debug,右邊綠色三角符號為運行,小的粉色方形按鈕為單步跟蹤,單步跳出等;

 


免責聲明!

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



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