重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
包头
成都创新互联是一家专注于成都网站制作、成都网站建设与策划设计,和政网站建设哪家好?成都创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:和政等地区。和政做网站价格咨询:18980820575
create or replace package package_name is
prcedure p1;
prcedure p2(v1 in char, v2 in date);
end package_name;
包体
create or replace package body package_name is
prcedure p1 is
begin
--代码省略
end p1;
prcedure p2(v1 in char, v2 in date) is
begin
--代码省略
end p2;
end package_name;
在存储过程或函数里调用oracle包的话,首先要有执行这个包的权限;如果包属于其他的用户(不是系统包),调用时:用户名.包名.存储过程(参数)名或者
变量:=用户名.包名.函数(参数);因为函数有返回值,变量类型要跟函数返回值的类型一致。
在command
下调用的话:exec
用户名.包名.存储过程名(参数);select
用户名.包名.函数名(参数)
from
dual;就可以了。包属于当期用户可以不写用户名。
查看表的定义:
set long 999999
select dbms_metadata.get_ddl('TABLE',upper('table_name') from dual ;
查看视图的定义:
select text from user_views where view_name=upper('view_name') ;
查看index的定义:
select dbms_metadata.get_ddl('INDEX',upper('index_name') from dual ;
select index_name,index_type,table_owner,table_name from user_indexes where table_name='TEMP3';
查看procedure的定义:
select text from user_source where name='PROCEDURE_NAME' ;
查看trigger的定义:
select trigger_body from user_triggers where trigger_name='trigger_name' ;
先修改包头,加入存储过程声明,然后再在包体中增加即可! select text from dba_source where owner='xxx' and name='包名' and type='PACKAGE BODY' order by line asc
包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成
1.创建包
--创建一个包sp_package
create package sp_package is
--声明该包有一个过程和函数,(没有实现)
procedure update_sal(name varchar2,newsal number);
function annual_nicome(name varchar2) return number;
end;
--创建包体(用于实现已经声明的函数和过程)
create package body sp_package is
procedure update_sal(name varchar2,newsal number)
is
BEGIN
UPDATE emp
SET sal = newsal
WHERE ename = name;
END;
function annual_income(name varchar2)
return number is
annual_salary number;
BEGIN
SELECT sal * 12 + Nvl(comm,0)
INTO annual_salary
FROM emp
WHERE ename = name;
RETURN annual_salary;
END;
end;
--调用包中的内容
exec sp_package.update_sal('name',number);