当前位置:首页 » 存储配置 » oracle调用存储函数

oracle调用存储函数

发布时间: 2022-04-12 21:04:15

❶ oracle中运用存储过程调用函数

我也来做,以下程序经过测试,正常获取cost值,插入收银信息表正常!!
--创建表
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 ;
--创建procere
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 al;
INSERT INTO cost_info VALUES(p_memeberid,p_spend,v_cost);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
dbms_output.put_line(SQLERRM);

END;
----执行procere
BEGIN
proc_mem(1,1000);
END;

❷ oracle 怎么调用存储过程

ORACLE存储过程 以oracle自带例子数据库的表举例
1、

create or replace procere p
is
cursor c is
select * from emp2 for update;
begin
for v_emp in c loop
if(v_emp.sal <2000) then
update emp2 set sal =sal+1 where current of c ;
elsif(v_emp.sal>=2000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;

创建了存储过程不代表运行了存储过程;
运行此存储过程 :
方式一 exec p;
方式二
begin
p;
end;
2、带参数的存储过程
in 相当于程序里的参数,供传入用,在存储过程不能改变其值;
out 相当于程序里的返回值,在存储过程中可以为其赋值传出;
in out 既可以当参数又可以当返回值用;
不带上述说明符默认为in类型;

下例中v_a v_b 为in类型
v_c 为out类型
v_d 为in out 类型

create or replace procere p(v_a in number,v_b number,v_c out number,v_d in out number)
is
begin
if(v_a > v_b) then
v_c := v_a;
else
v_c := v_b;
end if;
v_d := v_d+1;
end;

---> 调试时:
可以在命令窗口调试,出错时 用show errors 显示出错信息;
可以在plDv中调试;

---> 运行时:
可以在命令窗口运行:
declare
v_a number:=3;
v_b number:=4;
v_c number;
v_d number:=5;
begin
p(v_a,v_b,v_c,v_d);
dbms_output.put_line(v_c);
dbms_output.put_line(v_d);
end;
可以在plDv中调试;

❸ ORACLE存储过程怎么调用

在sqlplus中:
SQL>execute [包名.]过程名(参数列表); --然后回车即可

在其他过程或函数中,直接调用就行了。

❹ oracle数据库调用存储过程

这个需要分情况的
如果是在应用程序(Java等)中调用存储过程,需要根据相应语言的语法来进行。这个可以通过查找相应语言的帮助来找到。
如果是在Oracle的其他存储过程中调用,直接写存储过程名就可以了。传入相应的参数,即可执行。
如果在Oracle的命令行中,使用EXEC
存储过程名(参数)
的方式即可调用。
如果存储过程执行的语句写在SQL文件中,则可以通过调用文件的方式执行,即
SQL>
@D:\SQL\example.sql的形式

❺ oracle调用函数的问题

在传统的函数里,是不能执行
插入、删除、update
操作的。
所以,你如果把函数放到
select
中,函数中就只能
包含select
的语法。

❻ oracle 中怎样从函数中调用函数,怎样从存储过程中调用函数

oracle中调用函数是十分简单的,存储过车调用函数也是一样的。例子如下:

createprocerepro_name1
as
v_paravarchar2(200):=‘ImDanny';
begin
--withoutparameterscase
pro_name2;
--withparameterscase
pro_name3(v_para);
end;

❼ oracle如何在函数中调用存储过程

函数中调用存储过程报错,多半是由于函数的执行用户,没有授权insert 权限。

❽ oracle 存储过程中调用存储过程

一个带参数的存储过程。
SQL> CREATE OR REPLACE PROCEDURE HelloWorld1 (
2 p_user_name VARCHAR2
3 ) AS
4 BEGIN
5 dbms_output.put_line('Hello ' || p_user_name || '!');
6 END HelloWorld1;
7 /

Procere created.

SQL> CREATE OR REPLACE PROCEDURE CallHelloWorld1 (
2 p_user VARCHAR2
3 ) AS
4 BEGIN
5 -- 调用存储过程的 存储过程
6 HelloWorld1(p_user);
7 END CallHelloWorld1;
8 /

Procere created.

执行
SQL> set serveroutput on
SQL> exec CallHelloWorld1( 'Tom' );
Hello Tom!

PL/SQL procere successfully completed.

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

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

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

--创建无参存储过程
CREATEORREPLACEFUNCTIONstu_procRETURNVARCHAR2IS
--声明语句段
v_namevarchar2(20);
BEGIN
--执行语句段
SELECTo.snameINTOv_nameFROMstudentowhereo.id=1;
RETURNv_name;
END;

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

2、入参存储过程的调用

--创建入参存储过程
CREATEORREPLACEFUNCTIONstu_proc(v_idINNUMBER)RETURNVARCHAR2IS
--声明语句段
v_namevarchar2(20);
BEGIN
--执行语句段
SELECTo.snameINTOv_nameFROMstudentowhereo.id=v_id;
RETURNv_name;
END;

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

❿ 在oracle中 存储过程如何调用存储过程

在存储过程中直zd接使用就行了
--创建回一个存储答过程
CREATE
OR
REPLACE
PROCEDURE
PR_NEW1
(N_NAME
VARCHAR2)
as
begin
DBMS_OUTPUT.PUT_LINE(N_NAME);
end
;
--在另一个存储过程中调用
CREATE
OR
REPLACE
PROCEDURE
PR_NEW2
as
begin
PR_NEW1('NAME');
---
end
;

热点内容
电脑哪些配置功耗高 发布:2024-11-20 13:21:28 浏览:352
加密软件安装 发布:2024-11-20 13:21:16 浏览:176
android蓝牙播放 发布:2024-11-20 13:11:54 浏览:237
网易我的世界domcer服务器激活码 发布:2024-11-20 12:58:35 浏览:467
linux版本历史 发布:2024-11-20 12:41:12 浏览:947
win10安装linux双系统 发布:2024-11-20 12:39:53 浏览:46
我的世界求服务器ip 发布:2024-11-20 12:27:22 浏览:360
序列匹配的算法 发布:2024-11-20 12:23:27 浏览:190
电脑版如何加入手机版服务器 发布:2024-11-20 12:22:53 浏览:62
源码超 发布:2024-11-20 12:22:49 浏览:630