存储过程基础不在这说了。
第一步先创建存储过程的包体:
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