想要提高Oracle交互性,通過定義與使用替換變量就可以實現了,下面就為您詳細介紹利用替換變量提高Oracle交互性的方法,供您參考。
一、定義與使用替換變量。
在Oracle提供的相關工具中,如SQL PLUS管理平台中,允許數據庫管理員采用替換變量來提高SQL語句的靈活性。替換變量的定義跟普通變量的定義類似,只需要在變量名前面加入&符號即可。如上面例子中的“&name_filed”就表示一個替換變量。當運行一段有替換變量的SQL語句時,數據庫系統會自動提醒用戶要輸入哪些變量值。
如在如下這條語句中,&name_filed表示用戶想要顯示的字段值。若用戶想要顯示某個表中的多個字段的話,則可以在這裡定義多個替換變量。而條件語句中的'&NAME'則表示一個限制條件,或者說一個查詢參數。這條語句的大意就是用戶輸入員工的名字,然後讓系統查詢出用戶想了解的信息,如用戶的身份證號碼等等。
SQL> select &name_filed from dtmfg.ad_user t where t.name like '&NAME';
細心的讀者或許會發現,在查詢條件中的替換變量,為什麼要用單引號括起來呢?這是因為,我們在寫SQL語句的時候,若字段時字符型的話,就需要用單引號括起來。所以,在定義替換變量的時候,跟平時寫SQL語句類型。若數據類型是字符或者日期型的,則需要在定義替換變量的時候,用單引行括起來。否則的話,在用戶執行這條語句、輸入變量的時候,每次都需要把括號添加進去。那就非常的麻煩。相比起來,還不如在定義這條SQL語句的時候,就加入單引號。如此,在輸入對應值的時候,就不用用單引號括起來了,可以直接輸入。
另外,替換變量不但在Select語句中可以使用,在Update等語句中也可以普遍應用。
二、定義默認值。
有時候,對於替換變量我們可能會有默認值。如果數據庫管理員已經知道替換變量的具體值,又想避免運行腳本文件時反復出現,則可以給替換變量定義一個默認值。在SQL Plus平台中,數據庫管理員可以利用Define命令來定義替換變量的默認值。
在定義替換變量默認值的時候,需要注意幾個問題。
一是要合理使用單引號。該用單引號括起來的,就要使用單引號;不需要用的時候,堅決不用。否則的話,會造成SQL語句的運行錯誤。那麼什麼時候該用單引號呢?這主要是根據SQL語句來的。平時在寫SQL語句的過程中要用到單引號的,則在定義默認值的時候,也要用單引號括起來。如果平時不用的話,則就可以不用。如在定義字段名稱的默認值時,就不需要用單引號括起來。畫蛇添足,反而會導致SQL語句的執行錯誤二是這只是定義了一個默認值。當定義來一個默認值之後,系統就不會提示用戶輸入相關的參數,而直接采用默認值。如在上面這個例子中,若利用define NAME='SuperUser'這條語句定義了NAME的默認值之後,在執行這條Select語句的時候,就不會再提示用戶輸入NAME值。我們可以利用Define命令來查看當前環境中所有的可替換變量的值。也可以利用Define NAME來查看可替換變量NAME的默認值。
三是若用戶采用的是腳本文件的話,則可以直接把這個定義默認值的語句放在腳本文件的一開始。如此的話,這個默認值的定義就會隨著腳本文件而走。用戶不用每次使用腳本文件的時候,都先去定義默認值。這個這個默認值的作用域只是適用於當前的會話。當數據庫管理員結束當前的會話後,這個變量的默認值也就失效了。為了在下次重新會話的時候,仍然可以利用這個默認值,故在腳本文件一開始定義可替換變量的默認值,也是非常有必要的。
四是利用Define命令來定義可替換變量的時候,有一個限制條件。即可替換變量必須是字符型的數據。若用戶想定義的可替換變量是數字型的,如員工的薪水,此時,就需要采用ACCEPT命令。否則的話,就是一個無效的默認值。
若我們有時候不需要這個默認值,需要取消他,改如何處理呢?此時,我們就可以利用undefine命令,來取消某個替換變量的默認值。當然,我們也可以利用Define命令來給某個替換變量設置一個新的值。在實際工作中,可能還是直接采用Define命令來為其設置一個默認值來的方便。
三、測試完畢後,保存為腳本文件。
為了增強這個SQL語句的可重用性,我們往往會把寫好的SQL語句保存為腳本文件。如此的話,下次需要用到的時候,直接執行這個腳本語句即可。在保存的時候,為了有更好的可讀性,筆者有一些小小的建議。
一是最好在腳本文件的開頭,注釋一些這條語句的具體用途。俗話說,好記性不如爛筆頭。在幾個月後,很難確保你還記得這條語句的用途。
二是給可替換變量取一些比較直觀的名字。否則的話,當使用數據庫管理員可能直接都不知道某個替換變量所代表的含義。另外,列的替換變量跟查詢語句中的替換變量最好進行區分,如可以利用前綴進行區別。如此做的話,這個語句的可閱讀性就會增強。
三是可利用Prompt命令來輸出一些提示信息。在編寫替換變量的時候,要像編寫其他程序一樣,養成為每個可替換變量做好注釋的習慣。這時作為數據庫管理員一個必備的技能之一。
四、其他解決方案。
針對Oracle數據庫交互性而言,它還提供了一些其他的解決方案。
如利用ACCEPT、PAUSE、PROMPT三個命令結合使用提供一個模擬的用戶輸入界面。ACCEPT命令可以讓數據庫管理員指定替換變量的類型。因為Define定義替換變量默認值的時候,只能夠接受字符型數據的默認值。若是其他數據類型的默認值的話,就要用ACCEPT來定義。而PAUSE顧名思義,可以讓腳本語句暫時運行,以提供一個更加友好的用戶界面。如可以讓用戶通過輸入回車鍵來執行剩下的腳本語句等等。如此,就給用戶一個“喘息”核對數據的機會。
如可以通過綁定變量的方式,來實現替換變量的功能。綁定變量只在當前會話中存在,同名的綁定變量一最後一個定義為准。綁定變量在賦值的時候,比較麻煩,需要采用Excute命令來給綁定變量進行賦值。所以,在實際應用中,不是很廣泛。