pl sql developer登陆界面找不到oracle数据库选项 怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pl sql developer登陆界面找不到oracle数据库选项 怎么办相关的知识,希望对你有一定的参考价值。

我也和你碰到同样的问题。我是这样解决的。点击桌面上的PLSQL不输入任何东西,进入。Tools->Preferences,在Oracle Home OCI Library两栏中分别填入Oracle客户端的路径和OCI文件的路径(oci.dll文件直接在instantclient_10_2文件夹下), 所以我在这两个选项中填写的内容是“D:\oracle\product\10.2.0\db_1\BIN”和“D:\oracle\product\10.2.0\db_1\BIN\oci.dll 然后重新启动PLSQL就可以了,希望能对你有帮助。 参考技术A 如果不想改配置文件的话,,, 就手动改 Net Configuration Assistant

或者如楼上所说的,改一下tnsnames.ora这个文件。
参考技术B 检查下你的tnsnames.ora,有没有配置追问

怎么配置啊 确实没配置

追答

比如:
# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.13)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = TESTDB)
(INSTANCE_NAME = TESTDB)
)
)

追问

已经改成这样了 还是没用

追答

HOST的值可以改成你的计算机名或你电脑的固定IP

追问

主机那一栏就是我的计算机名 没用 我改成固定ip还是没用

追答

改成你的计算机名或固定IP后,PLSQL要关掉,重新打开下,如果确实还不可以,那真的不晓得还有什么别的地方有影响啦

本回答被提问者和网友采纳
参考技术C 不晓得 你问题解决没有? 参考技术D 这个不是在Oracle中的配置和移植工具的Net Manager配置的吗?追问

怎么配置啊

追答

程序->Oracle->配置和移植工具->Net Manager;
在Oracle net manage窗口
点击本地->服务命名,然后点击左侧+创建,
添加数据库的相关配置(IP,端口等等)
然后再打开PLSQL应该有该配置的数据库了

PL/SQL 找不到数据异常处理

【中文标题】PL/SQL 找不到数据异常处理【英文标题】:PL/SQL no data found exception handling 【发布时间】:2017-02-14 11:02:07 【问题描述】:

我有一个 EMAILS 表,其中包含以下列:ROUTINE、EMAILS 和 COPIES,它们定义了应该使用 UTL_MAIL 将特定过程的结果发送给谁(至/cc)。

我有以下代码:

PROCEDURE myproc AS
  NO_EMAIL_FOUND EXCEPTION;
  e EMAILS%ROWTYPE;
  x NUMBER;
BEGIN

  --fetch data
  SELECT x INTO x FROM <...>;

  --fetch emails
  SELECT * INTO e FROM emails WHERE routine='FRS_WEEKLY';
  IF e.emails IS NULL AND e.copies IS NULL THEN
    RAISE NO_EMAIL_FOUND;
  END IF;

  <send mail code using UTL_MAIL>;

  EXCEPTION
    WHEN NO_EMAIL_FOUND THEN <code1>;
    WHEN NO_DATA_FOUND THEN <code2>;
    WHEN OTHERS THEN NULL; --RAISE;

END myproc;

我希望 myproc 在 EMAILS 表中没有电子邮件时执行 code1。我的问题是没有引发 NO_EMAIL_FOUND 异常并且 code2 执行,因为在 SELECT 语句中引发了 NO_DATA_FOUND 异常。如何避免这种情况?

【问题讨论】:

【参考方案1】:

试试这个:

PROCEDURE myproc AS
    NO_EMAIL_FOUND EXCEPTION;
    e EMAILS%ROWTYPE;
    x NUMBER;
BEGIN

    BEGIN
        --fetch data
        SELECT x INTO x FROM <...>;

        --fetch emails
        BEGIN
            SELECT * INTO e FROM emails WHERE routine='FRS_WEEKLY';
        EXCEPTION WHEN NO_DATA_FOUND THEN
            RAISE NO_EMAIL_FOUND;
        END;
        IF e.emails IS NULL AND e.copies IS NULL THEN
            RAISE NO_EMAIL_FOUND;
        END IF;

        <send mail code using UTL_MAIL>;

    EXCEPTION
        WHEN NO_EMAIL_FOUND THEN <code1>;
        WHEN NO_DATA_FOUND THEN <code2>;
        WHEN OTHERS THEN NULL; --RAISE;
    END;

END myproc;

【讨论】:

是的,解决方案是将我的 SELECT 封装到内部 BEGIN EXCEPTION END 结构中,在内部捕获 NO_DATA_FOUND,并根据需要将其传播到 NO_EMAIL_FOUND,最后捕获它。 IF e.emails IS NULL ... 则不再需要。谢谢。【参考方案2】:

使用这个:

PROCEDURE myproc AS
  NO_EMAIL_FOUND EXCEPTION;
  e EMAILS%ROWTYPE;
  x NUMBER;
BEGIN

  --fetch data
  SELECT x INTO x FROM <...>;

  --fetch emails
  BEGIN
    SELECT * INTO e FROM emails WHERE routine='FRS_WEEKLY';
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      RAISE NO_EMAIL_FOUND;
  END;

  IF e.emails IS NULL AND e.copies IS NULL THEN
    RAISE NO_EMAIL_FOUND;
  END IF;

  <send mail code using UTL_MAIL>;

  EXCEPTION
    WHEN NO_EMAIL_FOUND THEN <code1>;
    WHEN NO_DATA_FOUND THEN <code2>;
    WHEN OTHERS THEN NULL; --RAISE;

END myproc;

我希望您知道此例程只能处理一封电子邮件;如果有多个,则会引发 TOO_MANY_ROWS 异常。

【讨论】:

列 'routine' 是我的 EMAILS 表中的 PK,因此不会有 TOO_MANY_ROWS(每个过程执行一条记录和一封邮件)。当然,一封电子邮件,但有更多的电子邮件地址。

以上是关于pl sql developer登陆界面找不到oracle数据库选项 怎么办的主要内容,如果未能解决你的问题,请参考以下文章

[Oracle] - 使用32位 PLSQL(PL/SQL Developer)登陆64位Oracle失败之解决

如何在 PL/SQL Developer 中启用 dbms_output

如何安装pl/sql developer

解决PL/SQL Developer过期

oracle数据库中有数据,通过pl/sql查询不到,用sqlplus能查到,PL/SQL developer会对数据进行本地缓存

PL/SQL Developer过期解决方法