189 8069 5689

oracle包体怎么设置 oracle包和包体的区别

如何建立oracle包,如何调用包的过程或是函数

包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成

专业从事做网站、网站建设,高端网站制作设计,成都小程序开发,网站推广的成都做网站的公司。优秀技术团队竭力真诚服务,采用html5+CSS3前端渲染技术,成都响应式网站建设公司,让网站在手机、平板、PC、微信下都能呈现。建站过程建立专项小组,与您实时在线互动,随时提供解决方案,畅聊想法和感受。

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);

oracle 如何在包里创建一个简单的函数和存储过程

25、包

(1)定义包头

语法:

CREATE [OR REPLACE] PACKAGE [schame_name.]包名

IS | AS

包描述

包描述:可以是变量、常量及数据类型定义和游标定义,也可以是存储过程、函数定义和参数列表返回值类型。

例:

CREATE OR REPLACE PACKAGE employeePackage

AS

--类型定义

Type empRecType is record(

Empno number(4),

Salary number

)

--变量定义

p1 varchar2(20);

type t_departmentNo table is table of dept.deptno%type

index by binary_integer;

--游标定义

Cursor order_sal retrurn EmpRecType;

--聘用员工过程

Procedure HireEmployee(p_EmpNo emp.empno%type);

End employeePackage;

例:

CREATE OR REPLACE PACKAGE scott.pkg_displayproduct

IS

procedure prc_getproductinfo

(

pid scott.product.prodid%type,

pname out scott.product.prodname%type,

ctname out scott.product.CATEGORYID%type,

dscp out scott.product.description%type

);

function fun_getstock

(

pid scott.product.prodid%type

)

return number;

END pkg_displayproduct;

(2)定义包体

语法:

CREATE OR REPLACE PACKAGE BODY [schame_name.]包名

IS | AS

包体描述;

END 包名;

包名:将要创建的包名称,该名称可以和包头所在的包名相同,也可以不同。

包体描述:游标、存储过程或者函数的定义

包体是可选的,如果在包头中没有声明任何存储过程或者函数,则包体就不存在,即使在包头有变量、游标或者类型的声明

(3)引用包中对象

BEGIN

[schame_name.][包名.]对象名;

END;

oracle package body怎么执行啊?

包只是作为 程序的一个载体而已,你要运行,当然是去调用它!

包里面可以包含函数、过程等,你可以开发程序时候调用包里面的这些程序!没有听说过包怎么运行的道理!

就像电视机(包)可以用来看电视,但是你不去打开它(调用包),它就没有作用!

楼下的明显误导别人啊,包何来参数之说?只有包里面的程序才有参数,调用包里面过程的方法如下:

begin

exec 包名.过程名();

end;

函数的调用就不用我写了吧!

oracle 如何在包和包体中添加新的存储过程?如何查看包的sql内容?

先修改包头,加入存储过程声明,然后再在包体中增加即可!

select text from dba_source where owner='xxx' and name='包名' and type='PACKAGE BODY'

order by line asc

c#怎么执行sql脚本在oracle中创建包和包体

调用方式如下:

using (var conn = new OracleConnection(oradb))

using (var cmd = conn.CreateCommand())

{

cmd.CommandType = CommandType.StoredProcedure;

cmd.CommandText = "PKG_NAME.INSERT_FUNC";

cmd.BindByName = true;

cmd.Parameters.Add("Return_Value", OracleDbType.Int16,

ParameterDirection.ReturnValue);

cmd.Parameters.Add("i_description", OracleDbType.Varchar2, 1000,

promotionEventSetupDetails.PromotionDescription,

ParameterDirection.Input);

cmd.Parameters.Add("i_theme", OracleDbType.Varchar2, 80,

promotionEventSetupDetails.PromotionTheme,

ParameterDirection.Input);

cmd.Parameters.Add("o_id", OracleDbType.Varchar2,

ParameterDirection.Output);

cmd.Parameters.Add("o_error_msg", OracleDbType.Varchar2,

ParameterDirection.Output);

conn.Open();

using (var dr = cmd.ExecuteReader())

{

// 业务代码

}

}

Oracle 怎么根据包头生成包体

包头

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包体怎么设置 oracle包和包体的区别
文章分享:http://jkwzsj.com/article/hhgegc.html

其他资讯