今天在做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_2
set ORACLE_HOME=D:\oracle\product\instantclient_10_2
set TNS_ADMIN=D:\oracle\product\instantclient_10_2
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
start 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。