oracle form怎么调用oracle存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle form怎么调用oracle存储过程相关的知识,希望对你有一定的参考价值。

参考技术A 下面的代码给你参考下。我做了一个form,form上有一个button,代码里是when button pressed的事件
------------------------------
declare x_count number;
begin

if :XXOM_HOLD_RELEASE_HEADER_V.HEADER_ID is not null then
select count(*)
into x_count
from XXOM_HOLD_RELEASE_LINE_V
where HEADER_ID=:XXOM_HOLD_RELEASE_HEADER_V.HEADER_ID and transfer_price=999999.00000;
if x_count=0 then

--replace begin

XXA0OM_HOLD_RELEASE_PKG.xxa0om_hold_release_header_pro
(
v_header_id => :XXOM_HOLD_RELEASE_HEADER_V.HEADER_ID,
v_org_id => :XXOM_HOLD_RELEASE_HEADER_V.ORG_ID
);
-- replace end
go_block('XXOM_HOLD_RELEASE_HEADER_V');
execute_query;
else
fnd_message.debug('You can not release the order with transfer price equal to 999999.00000');
raise form_trigger_failure;
end if;
end if;

exception
when others then
raise form_trigger_failure;
end;

-----------------------------------------
XXA0OM_HOLD_RELEASE_PKG.xxa0om_hold_release_header_pro 这个就是Oracle里的一个存储过程。希望对你有用
参考技术B 一般都是在触发器里调用存储过程的,希望能够再详细点。 参考技术C EBS的from么

oracle 函数中能调用存储过程吗

oracle 函数中能调用存储过程,举例如下:

1、无参数存储过程的调用

--创建无参存储过程
CREATE OR REPLACE FUNCTION stu_proc RETURN VARCHAR2 IS
    --声明语句段
    v_name varchar2(20);
BEGIN
    --执行语句段
    SELECT o.sname INTO v_name FROM student o where o.id=1;
    RETURN v_name;
END;

--调用无参存储过程
DECLARE 
BEGIN 
    DBMS_OUTPUT.put_line(\'在PL/SQL中打印的结果:\'||stu_proc);
END;

2、入参存储过程的调用

--创建入参存储过程
CREATE OR REPLACE FUNCTION stu_proc(v_id IN NUMBER) RETURN VARCHAR2 IS
    --声明语句段
    v_name varchar2(20);
BEGIN
    --执行语句段
    SELECT o.sname INTO v_name FROM student o where o.id=v_id;
    RETURN v_name;
END;

--调用入参存储过程
DECLARE 
BEGIN 
    DBMS_OUTPUT.put_line(\'在PL/SQL中打印的结果:\'||stu_proc(1));
END;
参考技术A 举个例子吧,你看看
--创建表
CREATE TABLE member_info(
memberid NUMBER,
memberlevel VARCHAR2(20),
memberdis NUMBER)
;
CREATE TABLE cost_info(
memberid NUMBER,
spend FLOAT,
COST FLOAT)
;

INSERT INTO member_info VALUES(1,'A',0.1);
INSERT INTO member_info VALUES(2,'A',0.2);
INSERT INTO member_info VALUES(3,'A',0.3);
INSERT INTO member_info VALUES(4,'A',0.4);
--创建函数
CREATE OR REPLACE FUNCTION function_mem(p_memeberid member_info.MEMBERID%TYPE,p_spend cost_info.SPEND%TYPE)
RETURN FLOAT
IS
v_cost cost_info.COST%TYPE;
v_memberdis member_info.MEMBERDIS%TYPE;
BEGIN
SELECT memberdis INTO v_memberdis FROM member_info WHERE memberid = p_memeberid;
v_cost := v_memberdis* p_spend;
RETURN v_cost;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END ;
--创建procedure
CREATE OR REPLACE PROCEDURE proc_mem(p_memeberid member_info.MEMBERID%TYPE,p_spend cost_info.SPEND%TYPE)
IS
v_cost cost_info.COST%TYPE;
BEGIN
SELECT function_mem(p_memeberid,p_spend) INTO v_cost FROM dual;
INSERT INTO cost_info VALUES(p_memeberid,p_spend,v_cost);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
dbms_output.put_line(SQLERRM);

END;
----执行procedure
BEGIN
proc_mem(1,1000);
END;本回答被提问者和网友采纳
参考技术B 当然可以。

以上是关于oracle form怎么调用oracle存储过程的主要内容,如果未能解决你的问题,请参考以下文章

qt调用oracle存储过程,该怎么处理

请问oracle怎么执行存储过程

sql server 怎么服务器连接调用oracle的存储过程

oracle中,一个存储过程怎么调用另一个存储过程?

oracle中怎么执行带有输出参数的存储过程,在程序中我知道怎么调用,

ORACLE存储过程怎么调用?