當前位置:首頁 » 存儲配置 » 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-05-19 06:43:07 瀏覽:494
cbs加密 發布:2024-05-19 06:29:56 瀏覽:200
ssis存儲過程 發布:2024-05-19 06:21:31 瀏覽:630
怎樣刪除小視頻文件夾 發布:2024-05-19 05:49:29 瀏覽:589
開啟php短標簽 發布:2024-05-19 05:44:12 瀏覽:473
android各國語言 發布:2024-05-19 05:42:54 瀏覽:247
微信什麼資料都沒怎麼找回密碼 發布:2024-05-19 05:35:34 瀏覽:907
填志願密碼是什麼 發布:2024-05-19 05:30:23 瀏覽:318
城堡爭霸自動掠奪腳本 發布:2024-05-19 05:22:06 瀏覽:204
asp編程工具 發布:2024-05-19 05:20:36 瀏覽:143