c#调用oracle存储过程复习进程 下载本文

精品文档

(2)OUT INOUT 类型 可以进入后赋值。

(3)OUT 类型参数在调用过程传入参数时无效,

(4)OUT ,IN OUT 类型参数 在调用过程时传入的必须是变量

---------

一个过程创建了,将执行权限授予其他用户

语法:

GRANT EXECUTE ON procedure_name TO USER_Name; //授权给特定用户执行过程的权限

GRANT EXECUTE ON procedure_name TO public ; //授权给所有数据库用户执行过程的权限

查看数据库里面的存储过程:

select object_name from user_objects where object_type='PROCEDURE';

select substr(object_name,1,20) object_name,object_type from user_objects where object_type='PROCEDURE';

select substr(object_name,1,10) object_name,object_type from user_objects;

删除一个过程:

DROP procedure procedure_name;

____________________________________________________________________

_______________ 函数的 定义 和 使用 ____________________

____________________________________________________________________

函数与过程相似,也是数据库中存储的已经命名的PL/SQL块。

函数的主要特性:

(1)必须有一个返回值

(2)函数不能单独执行,只能通过SQL语句 或者PL/SQL程序块来调用。

函数定义 -- 语法:

CREATE [OR REPLACE] FUNCTION function_name

[(parameter1,parameter2...)]

收集于网络,如有侵权请联系管理员删除

精品文档

RETURN datatype

{IS|AS}

[local_declarations]

BEGIN

Exexutable_Statements;

[EXCEPTION

Exception_handlers;]

END;

/

注意:

(1)函数只能带有 IN 参数,而不能带有 IN OUT 或 OUT 参数。

(2)形式参数必须只能使用数据库类型,不能使用PL/SQL类型。

(3)函数返回类型也必须是数据库类型。

--------------

创建一个函数:

create or replace function fun_sum(a number,b number)

return number

IS

BEGIN

return a+b;

END;

--------------

通过SQL来执行函数:

SELECT function_name[(parameter1,parameter2...)] FROM DUAL;

select fun_sum(5,6) from dual;

收集于网络,如有侵权请联系管理员删除

精品文档

--------------

查看数据库里面的用户创建的函数:

select object_name from user_objects where object_type='FUNCTION';

select substr(object_name,1,20) object_name,object_type from user_objects where object_type='FUNCTION';

--------------

函数的授权:

GRANT EXECUTE ON function_name TO USER_Name; //函数的使用权授予特定的用户

GRANT EXECUTE ON function_name TO public; //函数的使用权授予数据库中所有用户

example:

GRANT EXECUTE ON fun_sum to public;

--------------

*** 自主事务处理

自主事务处理 是有另一个事务处理(主事务处理) 启动的独立事务处理。

举例:

//P1就是 自主事务处理

CREATE OR REPLACE PROCEDURE p1

AS

PRAGMA AUTONOMOUS_TRANSACTION; --就这句话,让事务处理独立开来了

BEGIN

END p1;

/

CREATE OR REPLACE PROCEDURE p2

AS

BEGIN

...

收集于网络,如有侵权请联系管理员删除

精品文档

p1;

...

END p2;

/

p2 过程 调用 了P1 过程,但是 p1过程声明了事务独立,

使得p1的运行对p2没有直接影响。

删除一个函数:

语法:

DROP FUNCTION Function_name;

Example:

drop FUNCTION fun_sum;

----------------------------------------------------------------

****************** 程序包 的创建 和使用 ****************

----------------------------------------------------------------

程序包是一种数据库对象,它是对相关PL/SQL类型,子程序,游标,异常,变量

和常量的封装。

创建一个程序包 有两个步骤:

(1) 创建 程序包规范。(也可以说成是 ‘声明程序包’)

基本语法:

CREATE [OR PEPLACE] PACKAGE package_name

IS|AS

[public type and item declarations]

[subprogram specifications]

END [package_name];

收集于网络,如有侵权请联系管理员删除