正文
oracle如何设置包 oracle定义包
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
oracle中创建一个包含过程和函数的包
--表create table my_toys( id varchar2(5), name varchar2(20), price number);--插入测试数据insert into my_toys values('G001','电热毯',145);insert into my_toys values('G002','自行车',327);insert into my_toys values('G003','牙膏',14.5);insert into my_toys values('G004','棉被',105);insert into my_toys values('G005','热水瓶',65);insert into my_toys values('G006','拖鞋',22.5); --包规范create or replace package toyspackas procedure UpdateToyPrice; function AvgToyPrice return number;end toyspack; --包主体create or replace package body toyspackas procedure UpdateToyPrice as avgPrice number := AvgToyPrice; begin while (avgPrice = 400) loop --循环更新 update my_toys set price= case when price*1.1500 then price*1.1 else price end; avgPrice := AvgToyPrice; commit; end loop; end UpdateToyPrice; function AvgToyPrice return number as v_avg number; begin select avg(price) into v_avg from my_toys; return v_avg; end AvgToyPrice;end toyspack; --调用execute toyspack.UpdateToyPrice;select toyspack.AvgToyPrice from dual;
怎么调用oracle里的包
在存储过程或函数里调用oracle包的话,首先要有执行这个包的权限;如果包属于其他的用户(不是系统包),调用时:用户名.包名.存储过程(参数)名或者
变量:=用户名.包名.函数(参数);因为函数有返回值,变量类型要跟函数返回值的类型一致。
在command
下调用的话:exec
用户名.包名.存储过程名(参数);select
用户名.包名.函数名(参数)
from
dual;就可以了。包属于当期用户可以不写用户名。
oracle创建包?和存储过程
--创建包头
CREATE OR REPLACE PACKAGE ELS.pkg_proxy
AS
TYPE cursortype IS REF CURSOR;
-- 得到交接确认代理人数据
PROCEDURE get_proxy_info (
v_emp_no IN VARCHAR2, --当前登录用户
v_to_emp_no IN VARCHAR2, --代理人工号
v_to_emp_name IN VARCHAR2, --代理人姓名
v_proxy_date1 IN VARCHAR2, --代理开始时间: yyyy/mm/dd
v_proxy_date2 IN VARCHAR2, --代理结束时间: yyyy/mm/dd
v_from_emp_no IN VARCHAR2, --被代理人工号
v_from_emp_name IN VARCHAR2, --被代理人姓名
p_cursor OUT cursortype
);
END pkg_proxy;
--创建包头
CREATE OR REPLACE PACKAGE BODY ELS.pkg_proxy
AS
-- 得到交接确认代理人数据
PROCEDURE get_proxy_info (
v_emp_no IN VARCHAR2, --当前登录用户
v_to_emp_no IN VARCHAR2, --代理人工号
v_to_emp_name IN VARCHAR2, --代理人姓名
v_proxy_date1 IN VARCHAR2, --代理开始时间: yyyy/mm/dd
v_proxy_date2 IN VARCHAR2, --代理结束时间: yyyy/mm/dd
v_from_emp_no IN VARCHAR2, --被代理人工号
v_from_emp_name IN VARCHAR2, --被代理人姓名
p_cursor OUT cursortype
)
AS
BEGIN
OPEN p_cursor FOR
WITH v AS
(
--查找当前登录人是否为管理员
SELECT *
FROM employee
WHERE dept_id IN (
SELECT ID
FROM department
START WITH ID =
(SELECT dept_id
FROM employee
WHERE emp_no = v_emp_no
AND is_admin IN (
SELECT r_value
FROM role_conditions
WHERE r_key =
'ProxySearch')
UNION
SELECT dept_id
FROM employee_add
WHERE emp_no = v_emp_no
AND is_admin IN (
SELECT r_value
FROM role_conditions
WHERE r_key =
'ProxySearch'))
CONNECT BY PRIOR ID = parent_id)
UNION
SELECT *
FROM employee
WHERE emp_no = v_emp_no)
SELECT DISTINCT *
FROM (SELECT a.currentuser, a.toagrentuser,
DECODE (a.agent_type,
'A', '当前交接确认代理',
'B', '将来离职签核代理',
'C', '当前离职签核代理',
'D', '将来交接确认代理',
''
) agent_type,
a.from_date, a.TO_DATE,
DECODE
(a.to_date1,
'', '无',
TO_CHAR (a.TO_DATE,
'yyyy/mm/dd am hh:mi:ss'
)
) to_date1,
a.flowinfo, b.emp_cname AS currentusername,
b1.emp_cname AS toagrentusername, workitem
FROM (
--当前交接确认代理
SELECT SUBSTR
(x.currentuser,
1,
INSTR (x.currentuser, '(') - 1
) AS currentuser,
SUBSTR
(x.toagrentuser,
1,
INSTR (x.toagrentuser, '(') - 1
) AS toagrentuser,
'A' AS agent_type,
x.create_date AS from_date,
x.create_date AS TO_DATE,
NULL AS to_date1, x.workid,
NULL AS formid, y.NAME workitem,
(SELECT e.emp_no
|| '('
|| e.emp_cname
|| ')'
FROM employee e
WHERE e.emp_no = y.emp_no)
AS flowinfo
FROM currentworkagrent x,
worktransferitem_m y
WHERE x.workid = y.ID
UNION ALL
--将来交接确认代理
SELECT SUBSTR
(currentuser,
1,
INSTR (currentuser, '(') - 1
) AS currentuser,
SUBSTR
(toagrent,
1,
INSTR (toagrent, '(') - 1
) AS toagrent,
'D' AS agent_type, starttime,
endtime, endtime AS to_date1, NULL,
NULL, NULL, NULL
FROM futureagrent) a,
employee b,
employee b1
WHERE a.currentuser = b.emp_no(+)
AND a.toagrentuser = b1.emp_no(+)) a
WHERE currentuser IN (SELECT emp_no
FROM v)
AND (currentuser = v_from_emp_no OR v_from_emp_no IS NULL
)
AND ( currentusername = v_from_emp_name
OR v_from_emp_name IS NULL
)
AND (toagrentuser = v_to_emp_no OR v_to_emp_no IS NULL)
AND ( toagrentusername = v_to_emp_name
OR v_to_emp_name IS NULL
)
AND from_date =
TO_DATE (NVL (v_proxy_date2, '2099/12/31'),
'yyyy/mm/dd'
)
AND TO_DATE =
TO_DATE (NVL (v_proxy_date1, '1000/12/31'),
'yyyy/mm/dd'
)
ORDER BY a.agent_type, a.from_date DESC;
END;
END pkg_proxy;
如何在Windows 7安装roracle包
1、软件准备database和client(在参考文献里有下载链接)
2、打开database安装包oracle如何设置包,运行安装程序Setup.exe,系统将启动Oracle Universal Installer,然后进行先决条件检查。会出现如下图示:
3、之后,系统将打开如下界面:选择安装方法。
ORACLE提供oracle如何设置包了两种安装方法:基本安装(I)和高级安装(A)。从上面的图中我们可以看到两种安装方法的不同之处,Oracle默认是选择基本安装:
4、基本安装,当填好对应的各项之后,“下一步”按钮将由灰色恢复正常,如下图所示,这时点击下一步即可进行安装。
5、高级安装,选择“高级安装”,“下一步”按钮会恢复正常,点击下一步,
将出现如下的画面“选择安装类型”。安装类型共有4种,分别是企业版(E)、标准版(S)、个人版(P)和定制(C)。每种安装的不同之处,我们也可以从图片上看到。为了完整安装Oracle 10g,我们选择了定制,然后选择下一步。
6、出现“指定主目录详细信息”设置。这里我们可以输入或选择所安装产品的名称以及安装产品的完整路径。如下图所示,这里我们没有进行修改,直接下一步。
7、加载产品之后,将出现选择产品组件的画面,如下图所示,选择需要的组件之后,点击下一步。这里我们选择了几乎所有的组件
8、出来的画面为“产品的先决条件检查”步骤。当我们在第4步选择基本安装后,直接就可以跳到这个画面。
9、点击“下一步”,一会将出现“创建数据库”的画面,如下图,这里有三个选项,分别为创建数据库(C)、配置自动存储管理(ASM)(A)和仅安装数据库软件(S),这里我们选择了创建数据库(C),点击下一步。
10、Oracle MTS Recovery Service配置界面,如下图,下一步
11、最后检查安装清单,然后点击安装。
12、安装中的画面,系统将复制文件并进行配置。
13、配置助手,安装完成后系统会自动运行下面所示的配置程序。
14、紧接着系统出现如下的界面Oracle Net Configuration Assistant,选择“执行典型配置“后,系统将返回13步中所示的画面继续运行下面的配置程序。
15、Database Configuration Assistant界面,选择模版来创建数据库,这里会有11步操作:
16、步骤一:数据库模版,选择定制数据库,下一步
17、步骤二:数据库标识。填入全局数据库名(XXXX)和SID(XXXX)(默认为orcl),下一步
18、步骤三:管理选项,默认,下一步
19、步骤四:数据库身份证明。可以为系统中的帐户配置不同的口令,为方便起见,我这里选择了“所有帐户使用同一口令”,设置初始口令,然后点击下一步
20、步骤五:存储选项,默认,下一步。
21、步骤六:数据库文件所在位置。默认,下一步。
22、步骤七:恢复配置。默认,下一步
23、步骤八:数据库内容,默认,下一步
24、步骤九:初始化参数。包括内存、调整大小、字符集和连接模式等的修改。默认,下一步
25、步骤十:数据库存储。可以指定用于创建数据库的存储参数。该页允许查看和更改控制文件、表空间、数据文件、回退段和重做日志组。默认,下一步
26、步骤十一:创建选项。默认勾选创建数据库,然后点击完成。
这时系统会弹出一个确认框,点击“确定”即可开始数据库的创建过程。
创建过程如下:创建并启动Oracle实例,创建数据库文件,创建数据字典视图,添加Oracle JVM,添加Oracle Data Mining,添加Oracle Text,添加Oracle XML数据库,添加Oracle OLAP,添加Oracle Spatial,添加Oracle Label Security,添加EnterManager档案库,添加用于.NET的Oracle Database Extensions,最后创建数据库。
经过漫长的数据库创建过程之后,终于提示如下,表示数据库创建完成。
点击退出之后,系统将返回第13步继续执行Sql Plus的配置过程,这一步是自动执行的,不需要人工干预。之后系统将提示如下信息,表示数据库已经安装完成,至此,数据库安装完成,同时我们记录下最后画面中的信息,方便我们日后对数据库进行管理等操作。信息如下:
Enterprise Manager Database Control URL - (XXXX) :
数据库配置文件已经安装到 C:\oracle\product\10.2.0,同时其oracle如何设置包他选定的安装组件也已经安装到 C:\oracle\product\10.2.0\db_1。
iSQL*Plus URL 为:
iSQL*Plus DBA URL 为:
oracle中将存储过程如何打包
你这题问的是什么意思,是想把存储过程定义到package中吗,创建package是需要创建包头和包体的,包头类似于JAVA中的接口,只有函数(JAVA中叫方法)的定义而没有具体的实现,创建格式如下:
create or replace package user.pkg_aaa is
/*包里面可以定义多个存储过程(procedure),自定义函数(function),自定义类型(type);*/
--传入俩个字符类型的参数,返回一个字符类型的值的函数
function fun_bbb(param1 in varchar2,param2 in varchar2) return varchar2;
--定义返回游标类型
type mycursor is ref cursor;
--传入一个字符类型参数,返回一个number类型的存储过程
procedure proc_ccc(param1 in varchar2,param2 out number);
end user.pkg_aaa;
以上是包头的定义,下面为包体(因包体涉及自己的实现方式,故这里简写),如下:
create or replace package body user.pkg_aaa is
--这里function就不写了
procedure proc_ccc(param1 in varchar2,param2 out number) is
--定义变量
begin
--实现步骤
end proc_ccc;
end user.pkg_aaa;
希望楼主采纳,如有不解,详问
oracle新建包卡住
在Oracle数据库中oracle如何设置包,新建一个包时可能会遇到卡住现象oracle如何设置包,这个问题一般是由于数据库正在进行大量处理,导致系统繁忙,而造成oracle如何设置包的。要解决这个问题,首先可以检查当前的数据库状态,看看是否存在大的事务正在进行oracle如何设置包;其次,可以创建索引来优化数据库查询oracle如何设置包;最后,也可以更改数据库的并发参数来提升性能。
oracle如何设置包的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle定义包、oracle如何设置包的信息别忘了在本站进行查找喔。