存储过程基础不在这说了。

第一步先创建存储过程的包体:

create or replace package pk_test_2 as

procedure etl(curDate   out  varchar);

procedure test_gs(age2  in  varchar);

end pk_test_2;

pk_test_2 是包名

etl 是第一个存储过程名字

test_gs 是第二个存储过程名字

out  代表输出参数

in  代表输入参数

第二步再创建包体内容:

createi or replace package body pk_test_2 is

PROCEDURE ETL(CURDATE       out VARCHAR)
AS
temp varchar(30);
BEGIN
select count(*) into CURDATE from G_INFO;
END ETL;


procedure test_gs(age2 in varchar)
as
csum varchar2(10) :=0;
begin
ETL(csum);
-- insert into GS_TEST(ID_,NAME,SEX,AGE) values(GS_TEST_SEQUENCE.NEXTVAL,sysdate,sysdate,sysdate);
dbms_output.put_line('date:'|| csum );
commit;
end test_gs;
end;

第一个存储过程是查询 pppinfo 表的总是,在赋值给 CURDATE 变量。

在test_gs 存储过程中  ETL(csum);  这种写法 就可以直接调用第一个存储过程。 第一个存储过程参数中 使用了 out,表示输出参数,故在第二个存储过程中需要声明一个变量 csum 用来接收。

dbms_output.put_line 是打印语句,可以使用PL/SQL 工具。在DBMS输出  选项中 可以看到输出结果。

执行此存储过程

DBMS输出 :

再把第一个存储过程里面的sql语句拿出来测下,看总数是多少

总数也是9 ,说明 同一个包内,存储过程是可以如此调用。

先建一张测试表:create table WWT_TABLE_TEST(NAME VARCHAR2(2000),AGE NUMBER,SEX VARCHAR2(20),BIRTHDAY DATE)创建被 调用 存储过程 :create or replace procedure wwt_test2(inchar in varchar2,outchar out varchar2... 所谓 存储过程 (),就是一组用于完成特定数据库功能的SQL,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的 存储过程 名字并给出相应的 存储过程 参数来 调用 并执行它,从而完成一个或一系列的数据库操作。 Oracle 的procedure,package,function package包括包头和包体,主要区别就是包体多了个body,包头里面需要声明procedure(声明时,可以写in和out参数,in代表输入,即需要读入的数据,被用于 存储过程 中使用,out代表输出参数,即这个数据可以在 存储过程 中进行更改,在 存储过程 之外可以获取这个参数,一般用于判断 存储过程 执行中是否产生异常),名字和参数名需与包体一致。有多个同业务的procedure可以写在同一个package下方便使用, 调用 的时候使用packagena 您不能在后续SQL语句中重用get_data_1中的REF CURSOR,因为它只是指向语句句柄的指针。游标本身不包含任何数据。你可以做点什么CREATE PROCEDURE get_data_2( p_cnt OUT NUMBER )ASl_rc <>;l_rec <>;BEGINget_data_1(<>, <>, l_rc);p_cnt :=... 一、概念如果一个对象的定义中引用了其他对象,那么此对象被称为依赖对象(dependent object),此对象所引用的对象被称为引用对象(referenced object)。为了管理方案对象(schema object)间的依赖关系, Oracle 需要记录所有的方案的状态(status):有效的(valid)已经通过编译,可以在被引用时直接使用。无效的(invalid)必须在使用之前进行编译。... 第一种情况是返回的游标是某个具体的表或视图的数据,如CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR BEGIN OPEN PRESULT FOR SELECT * FROM USERS; END P_TESTA;其中USERS就是数据库中一个表。在 调用 的时候只要声明一个该表的ROWTYPE类型就可以 引言PL/SQL( 存储过程 )是一种程序语言,叫做 过程 化SQL语言(Procedural Language/SQL),从Ada语言发展而来。PL/SQL是关系数据库对SQL语句的扩展,在普通SQL语句的基础上增加了编程语言的特点,把数据操作和 查询 语句组织在PL/SQL的 过程 化代码中,通过逻辑判断、循环等操作实现复杂的功能。使用PL/SQL可以编写具有很多高级功能的程序,能够把业务逻辑封装在数据库内部... 在上述示例中, 存储过程 your_stored_procedure 没有输入参数,也没有输出参数。您可以在 存储过程 的逻辑部分编写您需要的操作,例如 查询 数据并进行处理,输出消息等。请根据您的实际需求修改示例代码,并将适当的逻辑放在 存储过程 中。执行该 存储过程 时,可以使用 EXEC your_stored_procedure;或者 CALL your_stored_procedure;来 调用 它。在执行 过程 中, 存储过程 中的逻辑将被执行,并将结果输出到 DBMS_OUTPUT,您可以通过适当的方式查看输出结果。 概述说句实在的,平时工作基本上不会去背啥创建 存储过程 、创建函数、创建包之类的语法,但是相信大家面试啥的却基本会笔试这些,所以就对 存储过程 、函数和包的语法做下总结,也做个备忘!这里面语法大家理解就可以了,能记住最好...一、 Oracle 创建 存储过程 (procedure) 存储过程 (Stored Procedure)是一组为了完成特定功能的SQL语句集,它大大提高了SQL语句的功能和灵活性。 存储过程 编译... create or replace procedure gather_tp(v_year number,                                      v_month number,                                      v_day number                                      ) as