今天在做OA的報表,使用預存程序來計算一些資料,在做一個for xxx in xxxx loop end loop ; 迴圈的時候,
一直不知道為毛我不能再for中捕獲no_data_found 異常,一旦出現這個no_data_found
Oracle就會自動跳出了for迴圈,但是有不知道哪裡出錯了,那個鬱悶了一個小時啊。shit。
後來想起來pl/sql工具可以調試
但是我在安裝pl/sql 想起,沒有64位的,不經想Oracle 公司這麼的公司,竟然不出64,後來google一把,就拿來主義了,貼過來一篇在64位中安裝一個pl/sql
由於 PLSQL Developer 沒有64位版本,所以在64位系統上運行該程連結64位Oracle時就會報錯,筆者為這個問題糾結了好幾天,後來通過請教Google + 動手實踐,終於搞定了這個問題。現在把筆者解決的過程記錄下來,分享給遇到同樣問題的網友們。
首先到Oracle官網上下載一個32位的用戶端(instantclient),一定要下載 basic 版本的,不要下載 basiclite 版本的。筆者剛開始下載的是 basiclite 版本的,結果不好使,後來對比才發現, basiclite 比 basic 版本要小很多,估計可能是缺少什麼組件吧。
筆者使用的是instantclient-basic-win32-10.2.0.5.zip,在這裡給出。
首先把下載到的用戶端解壓縮出來,筆者解壓縮到了Oracle 的安裝目錄(D:\oracle\product\instantclient_10_2)。
然後複製D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora到 oracle\product\instantclient_10_2\ 目錄中。
接下來設定環境變數。
變數名:TNS_ADMIN變數值:D:\oracle\product\instantclient_10_2
設定好環境變數後,在 PLSQL Developer 的目錄中建立start.bat檔案。
以下是start.bat的內容:
@echo off set path=D:\oracle\product\instantclient_10_2set ORACLE_HOME=D:\oracle\product\instantclient_10_2set TNS_ADMIN=D:\oracle\product\instantclient_10_2set NLS_LANG=AMERICAN_AMERICA.ZHS16GBKstart plsqldev.exe
其中 set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 的 ZHS16GBK 是你的資料庫編碼。
然後啟動你的 PLSQL Developer,但是不要登入,直接進入。
然後點擊工具→喜好設定→串連,把“Oracle 主目錄名”設定為空白,並把 “OCI 庫” 設定為instantclient 目錄中的 oci.dll 的路徑,筆者的路徑是D:\oracle\product\instantclient_10_2\oci.dll。
然後儲存並退出 PLSQL Develoer,然後運行 start.bat。
如果運行不了那麼需要重新啟動系統再運行start.bat。