成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle Forms中多用途代碼有哪些?

數據庫 Oracle
以下的文章主要是介紹Oracle Forms中多用途的實際代碼,以下就是正文的主要內容介紹,希望會給你帶來一些幫助在此方面。

在前幾年,當Oracle數據庫放棄相關客戶端OracleForms的時候,隨之也跟著消失的那些相關內置的某些函數中會有一項是關于函數(alert message function)傳遞參數的。如果你處理錯誤或者缺失的輸入參數。

Forms遷移過程的一部分是將這個內置的函數從6i版本改成9i版本。

復雜的應用可能包含有上千條警告消息,并且一個主要的應用(即Forms)的變化會導致上千條改變。做這樣的改變的確是一件討人嫌的行為。

另一方面,作為一個使用PL/SQL的DBA和程序員,你到底寫過多少次DBMS_OUTPUT.PUT_LINE('')?必須寫的或者敲入的DBMS_OUTPUT.PUT_LINE變得非常無聊,使用方便的、內置的短小的代碼不是更好嗎?

可能并不是經過深思熟慮,但是更多的歸咎于好運或者意識到同樣的東西必須敲一遍又一遍的現實,機靈的OracleForms程序員們創建了自己的內置函數,采用了過程的方式來產生警告消息。相同的原理可以被用在你日常的PL/SQL代碼中。事實上,你可以創建一個小的消息庫管理很多類型的輸出消息。讓我們看看一些這樣的可能性。

一個簡單的警告消息過程

就像在這一章節標題中表示的那樣,第一個方法是非常簡單的。假設你有一個常見的需求要輸出某個過程、函數或者代碼塊更新的記錄個數。讓我們假定被更新行的個數是46。使用下面的過程之后,一個簡單的“am(46);”語句就可以你需要的輸出:

 

  1. CREATE OR REPLACE procedure am (msg number) as   
  2. begin   
  3. dbms_output.put_line('Records updated: '||msg);   
  4. end;   
  5. /  

另一個版本可以處理字符串類型,因此對 “ams('your message here');”的調用顯著的降低了你敲入的次數。當調試或者解決問題的代碼中,有這樣一個簡單的內置函數對輸出“where am I in the code”的語句是非常寶貴的。

位置報告可以確認,比如,你進入了IF-THEN-ELSE語句中哪個分支。假如你的問題代碼調用了很多次其他的對象(過程、函數等等),輸出像“calling function X”或者“returned from function X”這樣的狀態信息可以確認過程流。最終,另外一種使用情況是報告數值。你可以報告或者跟蹤一個變量的值是如何被改變的。

建立一個警告消息庫

當然,你的消息庫的復雜性和靈活性完全取決于你。假如你的(輸出)消息是簡單的,那么保持函數過程簡單。更準確的講,保持函數過程的個數是最少的。只要兩個簡單的過程,ams和amn,就可以用來輸出基于字符串和數值的消息了。

假如你需要讓輸出的文字內容根據運算的輸出有所變化,比如DML語句的輸出,那么你可能需要三個新的內置過程(插入、更新和刪除運算各一個)。可能你想說明刪除的類型或者原因。比如一個批處理作業的某一步是計算重復記錄的個數。

那么像“Records counted: 46” 這樣的輸出是足夠有用的,但是在這種情況下,“Duplicates counted: 46”會顯得更有效。因此,我們增加了2個新的內置過程。

這樣,我們現在有了至少6個不同的過程。現在,管理性的問題應該比較明顯了。我們尋找一些簡單的,但是同時又是健壯的過程。至少有兩種方式可以用于重新簡化需要的功能。一種方法是讓警告消息過程能夠接收兩個輸入參數。另外一種方法,正是我準備介紹的,是把這些過程打包。

增加輸入參數的個數

再說一遍,假如前面的簡單方法可以滿足了你的要求,那么就沒必要繼續深入了。創建有兩個輸入參數的過程,第一個參數是消息文字或者說基礎,第二個參數可以是輸出、位置、狀態或者數值。如果你關注數據類型的轉化,那么這兩個輸入參數的組合text/text和text/number都可以統一成text/text類型。

你的確必須做這樣的轉換嗎?不,但是為了和你已有的保持一致,如果你在別的地方做了類型映射,那么這里也進行類型映射。不管這些,下面的例子顯示了第一種方法的靈活性。

 

  1. CREATE OR REPLACE procedure am (msg1 varchar2, msg2 varchar2) as   
  2. begin   
  3. dbms_output.put_line(msg1||msg2);   
  4. end;   
  5. /  

編譯之后,下面是使用的例子。

 

  1. SQL> set serveroutput on   
  2. SQL> exec am('Here I am',46);   
  3. Here I am46   
  4. PL/SQL procedure successfully completed.  

好了,這次輸出本可以看起來更好一些(注意輸出中msg1和msg2中沒有空格)。我們到這里就必須格式化一個或者全部兩個消息輸入讓輸出好看一些。然而,假如美觀不需要關心,那么創建基于像 ('dupes ',46)這樣的輸入的消息,這樣做也是非常簡單的,雖然你需要處理空格或者格式化。

那么這種方法是否有缺陷呢?這就看情況了。假如你需要的僅僅是msg1,而不需要msg2,怎么辦?當創建這個過程,需要允許msg2是null值。顯然,msg1不需要這樣,對吧

  1. CREATE OR REPLACE procedure am   
  2. (msg1 varchar2, msg2 varchar2 default null) as   
  3. begin   
  4. dbms_output.put_line(msg1||msg2);   
  5. end;   
  6. /   
  7. Procedure created.   
  8. SQL> exec am('Where am I?');   
  9. Where am I?   
  10. PL/SQL procedure successfully completed.  

上述的相關內容就是對Oracle Forms中多用途代碼分析,希望會給你帶來一些幫助在此方面。

【編輯推薦】

  1. 想提高Oracle性能,如何優化數據庫?
  2. Oracle數據庫設計規范化的前兩個要求
  3. 對Oracle數據字典的文檔描述
  4. Oracle 11g調用相關函數的5種方法
  5. 調用Oracle procedure在pl/sql中的操作
責任編輯:佚名 來源: 博客園
相關推薦

2011-10-06 16:36:37

投影儀行情

2012-06-01 15:33:19

投影機評測

2025-02-13 09:26:43

Python元組集合

2022-01-27 11:34:02

區塊鏈比特幣技術

2021-07-09 10:27:12

SparkStreaming系統

2010-05-05 10:49:34

Oracle 復合類型

2010-05-10 18:38:08

Oracle分頁語句

2010-04-27 09:38:57

Oracle修改表ow

2010-04-21 09:12:56

Oracle JDBC

2010-05-05 09:33:46

Oracle事務

2010-03-29 13:33:27

Oracle模式

2019-01-31 14:35:11

MySQL新書數據庫

2010-05-07 10:19:48

Oracle 注意事項

2010-04-16 09:03:28

Oracle 存儲過程

2010-04-06 17:36:15

Oracle數據字典

2010-04-09 09:46:38

Oracle RAC

2023-04-25 17:06:38

視覺任務

2010-05-07 18:44:28

Oracle存儲過程

2010-04-07 16:33:56

Oracle刪除

2010-04-15 10:34:16

Oracle程序開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人精品久久久 | 成人一区二区视频 | 北条麻妃av一区二区三区 | 麻豆亚洲 | 黑人久久 | 日韩欧美一区在线 | 日韩久久成人 | 欧美男人天堂 | 涩涩视频大全 | 亚洲高清成人 | 97av在线| 天堂亚洲 | 免费欧美| 91社区在线观看 | 91直接看 | 91国语清晰打电话对白 | 亚洲中午字幕 | 日韩一区二区三区在线 | 九一视频在线播放 | 亚洲精品国产成人 | 成人免费区一区二区三区 | 久久精品视频在线免费观看 | 免费簧片视频 | 成人久久久 | 日韩av在线免费 | 久草视频在 | 国产免费一二三区 | 日韩a在线 | 亚洲一区电影 | www.av在线| 亚洲一区二区三区视频在线 | 欧美三级久久久 | julia中文字幕久久一区二区 | 精品久久久精品 | 日韩欧美1区2区 | 久久国产婷婷国产香蕉 | 日日人人| 成人精品国产一区二区4080 | 一级一级一级毛片 | 成人免费在线 | 91精品国产91久久综合桃花 |