安装完oracle,plsql后登录时提示这个,重装了,也还是提示这个,是oracle的问题还是plsql的原因,该如何解决?
plsql应该是默认指向了64位的服务端程序
你需要安装一个32位的客户端,然后plsql如果还不能登录,先点ok,无登录状态先进入,在参数那里设置驱动,指向32位的驱动,重启一下就好了
这个问题的根源就是你的plsql是32位的,它无法加载64位的dll
你也可以重新下载个64位的plsql,就能兼容32和64位的oracle
与过程相比,存储过程是存在数据库中的一个对象。如果编译错误,可以用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)
:
查看所有存储过程:
SELECT * FROM USER_SOURCE;
删除存储过程:
DROP PROCEDURE myproc2;