oracle如何调用包 oracle包的调用

Oracle PLSQL怎么用调用函数包

pl/sql

创新互联是一家专业提供蚌埠企业网站建设,专注与成都做网站、成都网站设计、成都外贸网站建设H5响应式网站、小程序制作等业务。10年已为蚌埠众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

里面定义的包在调用的时候使用exec

命令调用,例如:exec

package_name.过程名()

过程名():包体里面定义的公用过程。

不知道我的回答你清楚了吗?

在Java中调用Oracle包中的过程

一 先在oracle中编写测试过程

首选建一个测试表

Create tablecreate table BOOK(  BOOKID    VARCHAR ( ) not null   BOOKNAME  VARCHAR ( ) not null   PUBLISHER VARCHAR ( ) not null   PRICE     VARCHAR ( ) null)

编写ORACLE测试过程

CREATE OR REPLACE PACKAGE pkg_testAS   TYPE myrctype IS REF CURSOR;

PROCEDURE get (p_id VARCHAR p_str OUT VARCHAR p_rc OUT myrctype);END pkg_test;

/

CREATE OR REPLACE PACKAGE BODY pkg_testAS   PROCEDURE get (p_id VARCHAR p_str OUT VARCHAR p_rc OUT myrctype)   IS      sqlstr   VARCHAR ( );   BEGIN      p_str := Hello may~ ;      IF p_id = all THEN         OPEN p_rc FOR            SELECT *              FROM BOOK;      ELSE         sqlstr :=            select *           from BOOK where BOOKID=:w_id ;         OPEN p_rc FOR sqlstr USING p_id;      END IF;   END get;END pkg_test;

/

在这里我们建立了一个输入参数 为普通类型 两个输出参数 其中一个为普通VARCHAR 型 另一个为特殊的记录集类型

(注 在数据库端测试一下这个过程 以确保没有问题 开始下面的操作~ )

二 编写JAVA代码测试过程

/* * 创建日期:  */package JDBC;

/** * 作者:may * 时间: : :  */import java sql *;import oracle jdbc driver *;

public class proctest {    public static void main(String[] args) {   proctest pc = new proctest();   pc ShowContent();   }     String sDBDriver= oracle jdbc driver OracleDriver ;  String sConnStr= jdbc:oracle:thin:@ : :ORADB ;      Connection  connect=null;  ResultSet rs = null;    public proctest(){   try{    Class forName(sDBDriver);   }   catch(ClassNotFoundException e){    System err println(e getMessage());   }  }  public ResultSet ShowContent()      {      try{        connect = DriverManager getConnection(sConnStr SHUIBJ SHUIBJ );    CallableStatement  stmt = connect prepareCall( {call PKG_TEST GET(? ? ?)} );        stmt setString( all );  //输入参数        stmt registerOutParameter( Types CHAR); //输出参数为普通参数    stmt registerOutParameter( OracleTypes CURSOR); //输出参数为结果集参数          stmt executeQuery();        rs = ((OracleCallableStatement) stmt) getCursor( ); //得到输出结果集参数        ResultSetMetaData r *** d = rs getMetaData();     int numberOfColumns = r *** d getColumnCount();

String str = stmt getString( );           System out println( 第二个参数为: +str);    System out println( 结果集列数 +numberOfColumns);        //列出结果集中的记录    ResultSetMetaData md = rs getMetaData();    int nColumns = md getColumnCount();    for (int i= ;i=nColumns;i++){     System out print(md getColumnName(i)+((i==nColumns)? \n : \t ));     if(i== ) System out print( \t );    }        while (rs next()){     for(int i= ;i=nColumns;i++){     System out print(rs getString(i)+((i==nColumns)? \n : \t ));    }         }   }   catch(SQLException ex){    System err println(ex getMessage()+ 连数据库有问题! );   }      return rs;     }  }  输出结果为

lishixinzhi/Article/program/Oracle/201311/18612

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

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

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包体中调用另一个包体的方法

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

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如何调用包 oracle包的调用
当前网址:http://cdiso.cn/article/hgecsg.html

其他资讯