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存储过程的主要内容,如果未能解决你的问题,请参考以下文章
sql server 怎么服务器连接调用oracle的存储过程