是oracle的问题还是plsql的原因,该如何解决?

安装完oracle,plsql后登录时提示这个,重装了,也还是提示这个,是oracle的问题还是plsql的原因,该如何解决?

img

plsql应该是默认指向了64位的服务端程序
你需要安装一个32位的客户端,然后plsql如果还不能登录,先点ok,无登录状态先进入,在参数那里设置驱动,指向32位的驱动,重启一下就好了
这个问题的根源就是你的plsql是32位的,它无法加载64位的dll
你也可以重新下载个64位的plsql,就能兼容32和64位的oracle

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7457283
  • 你也可以参考下这篇文章:安装oracle数据库,oracle客户端,并用plsql打开安装的oracle数据库
  • 除此之外, 这篇博客: Oracle 数据库的PLSQL块,游标、函数,存储过程与触发器的使用方法与案例中的 三,存储过程 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •   与过程相比,存储过程是存在数据库中的一个对象。如果编译错误,可以用show errors or show errors procedure myproc

    定义一个简单的存储过程:

    CREATE OR REPLACE PROCEDURE myproc1 --PROCEDURE n.过程, 程序
    AS
        i NUMBER;
        BEGIN
            i := 100;
            DBMS_OUTPUT.PUT_LINE('i=' || i); --调用存储过程, 直接输出100
        END;
    /
    

      如果是命令行窗口的话,exec myproc1就可以调用存储过程了,如果是sql 窗口下的话需要用到PLSQL语句

    DECLARE
    	定义参数;
    BEGIN
    	myproc1; --如果存储过程有参, 则需要传参
    END;
    

    编写一个存储过程,可以传入人员的编号、姓名、性别(0,1代替),之后调用此存储过程就可以完成人员的增加操作。

    CREATE OR REPLACE PROCEDURE myproc2(ENO EMPLOYEE.EMP00%TYPE, NAME EMPLOYEE.EMP01%TYPE, XB EMPLOYEE.EMP02%TYPE)
    AS
        cou NUMBER;
        BEGIN
            --首先判断该编号是否被使用, 如果被使用了就不能添加
            SELECT COUNT(EMP00) INTO cou FROM EMPLOYEE WHERE EMP00 = ENO;
            IF cou = 0 THEN
                --可以添加
                INSERT INTO EMPLOYEE(EMP00, EMP01, EMP02) VALUES (ENO, NAME, XB);
                DBMS_OUTPUT.PUT_LINE('人员插入成功!');
            ELSE
                DBMS_OUTPUT.PUT_LINE('该人员编号已存在, 无法插入!');
            END IF;
        END;
    /
    
    begin
      myproc2('7350F9DE-F5BC-461A-B499-F86680D2DA4F', '阴阳人', '1');
    end;
    

    在这里插入图片描述
    存储过程的参数类型,在指定参数类型时添加,类似myproc2(ENO IN OUT EMPLOYEE.EMP00%TYPE)

    • IN:值传递,默认值
    • IN OUT:带值进,带值出
    • OUT:不带值进,带值出

    查看所有存储过程:

    SELECT * FROM USER_SOURCE;
    

    删除存储过程:

    DROP PROCEDURE myproc2;
    
  • 您还可以看一下 李明老师的PLSQL从入门到进阶课程中的 案例:书写一段PL/SQL来判断一个数是否是质数小节, 巩固相关知识点