-
Connect Statements查看全部
-
授权
grant debug connect session,debug any procedure to scott;
查看全部 -
创建和使用带参数的存储过程
举例:为指定员工,涨100块钱的工资;并且打印涨前和涨后的薪水。
注意:存储过程和存储函数的参数需要标明该参数是输入参数还是输出参数。这里需要的是输入参数,也就是需要输入员工号。
注意:这里已经对数据库记录做出了更改,一般不在存储过程中提交事物,因为这样不能保证在调用存储过程的代码在一个事物中。也就是哪里调用存储过程,哪里提交事物。
证明:oracle中执行完插入,需要commit,否则查看不到。这是oracle数据库的隔离级别导致的。
带参数存储过程创建:
带参数存储过程调用:像如图中这种情况,就可以保证这两个操作在同一事物中。
注意:存储过程的参数声明时,只能声明类型,不可以指定长度。
查看全部 -
创建和使用存储过程
创建存储过程语法:如图。注意:存储过程只能创建或者替换,不能修改,如果要修改就使用replace,它的意思是指如果创建时有相同的存储过程就替换该存储过程。其中AS代表声明(变量、光标)。
举例:通过存储过程,打印Hello World。注意:在讲解PL/SQL时,如果没有声明部分,那么可以不写declare部分,但是在存储过程中AS是不能省略的,即使没有声明。Oracle数据库存储数据库对象默认采取大写方式。
创建存储过程:
调用存储过程:
1、execute 存储过程名。
2、PL/SQL中调用,直接写存储过程名。
查看全部 -
Oracle存储过程和存储函数(自定义函数)
定义:存储在数据库中供所有用户程序调用的子程序(PL/SQL程序)叫存储过程,存储函数。
存储过程和存储函数的异同点:相同点——》完成特定功能的程序。不同点——》存储函数可以使用return语句返回值。
数据库对象:表、视图、索引、序列、同义词、存储过程、存储函数。
查看全部 -
--带参数的存储过程
--举例:为指定的员工涨100元的工资,打印涨前和涨后的工资
--如果带参,需要指定是输入参数还是输出参数
create or replace procedure raisesalary(eno in number)as
---定义一个变量保存涨前的薪水(引用emp表sal的数据类型)
psal emp.sal%type;begin
---得到员工涨前的薪水
select sal into psal from emp where empno=eno;
---给该员工涨100
update emp set sal=sal+100 where empno=eno;---需不需要commit?
---注意:一般不在存储过程或者存储函数中 commit和rollback
---打印涨前和涨后的工资dbms_output.put_line('涨前:'||psal||'涨后:'||(psal+100));
end;
/
--一般在调用存储过程或者函数的时候再commit,这样可以保证所有执行是在同一个事务中进行的
--如:
begin
raisesalary(7839);
raisesalary(7566);
commit;
end;
/
查看全部 -
一般不在存储过程或者存储函数中,commit和rollback
查看全部 -
--增加未找到用户抛出异常
CREATE OR REPLACE PROCEDURE PROSCOTTEMPADDSAL(V_EMPNO IN NUMBER,
MSG OUT VARCHAR2) AS
V_COUNT INTEGER := 0;
MY_ERR EXCEPTION; --自定义异常
BEGIN
MSG := 'OK';
SELECT COUNT(0) INTO V_COUNT FROM SCOTT.EMP A WHERE A.EMPNO = V_EMPNO;
IF (V_COUNT > 0) THEN
BEGIN
UPDATE SCOTT.EMP SET SAL = SAL * 1.1 WHERE EMPNO = V_EMPNO;
END;
ELSE
RAISE MY_ERR;
END IF;
EXCEPTION
WHEN MY_ERR THEN
MSG := '未找到工号为:[' || V_EMPNO || ']的员工信息!';
DBMS_OUTPUT.PUT_LINE(MSG);
END PROSCOTTEMPADDSAL;
查看全部 -
存储过程不能用return返回值,而存储函数可以
查看全部 -
存储过程和存储函数的区别在于存储函数可以返回一个值,存储过程不可以
语法:
create or replace procedure 名称(参数)
AS
PLSQL子程序;
调用存储过程
exec sayhellword();
begin
sayhelloword();
sayhelloword();
end;
调用存储过程:set serveroutput on
查看全部 -
存储在数据库中共所有用户程序调用的子程序叫存储过程/存储函数
查看全部 -
指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。
相同点:完成特定功能的程序
区别:是否用return语句返回值。有return的是存储函数,存储过程不允许使用return。
查看全部 -
存储过程都是数据库的对象。查看全部
-
-- 第一个存储过程:打印Hello World /* 调用存储过程: 1.exec sayhelloworld(); 2.begin sayhelloworld(); sayhelloworld(); end; / */ create or replace procedure sayhelloworld as --说明部分 begin dbms_output.put_line('Hello World'); end; /
查看全部 -
表、视图、索引、序列、同义词、存储过程、存储函数都是对象
存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。
存储过程和存储函数的相同点:完成特定功能的程序。
存储过程和存储函数的区别:是否用return语句返回值
查看全部
举报