扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
先create package,在里面声明procedure
成都创新互联公司2013年成立,先为寿县等服务建站,寿县等地企业,进行企业商务咨询服务。为寿县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
然后再create package body,在package body里面编写procedure的代码即可(相当于create procedure)。
包里没有create procedure
示例如下:
CREATE OR REPLACE PACKAGE pkg_test IS
PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2);
...
END test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test IS
...
PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2) IS
BEGIN
...
END;
...
END pkg_test;
如果你使用界面的话,就直接双击图标,如果使用脚本的话,就从开始程序里打开Oracle plus
,这两者都要保证你的服务是否启动,一般启动最后两个就可以
1.cmd进入命令行 lsnrctl start 启动监听服务,看出现什么错误
如果没有错误,察看数据库是否可以正常进行连接
2.看下你电脑是不是装了防火墙 先把防火墙禁止掉去
3.去orant\net80\trace\看看,一般有错都会在那里产生一个.log文件
oracle数据库中:用的最多的是表(table),表里面用于存储数据。起到数据库的作用。
包和包体一般是不可分的,包中定义变量;包体中书写操作程序。(备注:在数据库端得包体中编写数据库操作代码,简单,快捷,方便)。
前台只需要调用oracle的包体函数就可以实现该包体中的数据库操作语言,完成数据存储,修改,删除,等等功能。
除上述以外还有:视图,触发器,队列,数据库连接等等。
总之,oracle非常好用!!!!
------包体类似于C语言的公共类函数。
简单说,就是将oracle里的一部分procedure等object 组织起来,完全是为了方便代码程序的管理,完全不使用package也是可以的,只是那样的话,代码多了不易管理
在存储过程或函数里调用oracle包的话,首先要有执行这个包的权限;如果包属于其他的用户(不是系统包),调用时:用户名.包名.存储过程(参数)名或者
变量:=用户名.包名.函数(参数);因为函数有返回值,变量类型要跟函数返回值的类型一致。
在command
下调用的话:exec
用户名.包名.存储过程名(参数);select
用户名.包名.函数名(参数)
from
dual;就可以了。包属于当期用户可以不写用户名。
包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成
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);
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流