當前位置:首頁 » 存儲配置 » oracle存儲過程的實例

oracle存儲過程的實例

發布時間: 2022-06-25 21:23:53

A. oracle存儲過程的例子

基本語法:
create or replace procere p1 --存儲過程名稱
[(p_輸入參數 in datatype數據類型,p_輸出參數 out datatype數據類型)]
as
--v_變數名 datatype數據類型;也可聲明程序中需要的變數
begin
--執行語句;增刪改查
--[exception 異常處理]
end;
一般創建表不寫存儲過程:
create table USERS(
userid number(5) identity primary key,
username varchar2(20),
password varchar2(20)
);
insert into users values('AA','123');
insert into users values('bb','123');
查詢的存儲過程:輸入用戶名,查詢密碼
create or replace procere p1
(
p_username in users.username%type,p_password out users.password%type
)as
begin
select password into p_password from users where username=p_username;
exception
when no_data_found then dbms_output.put_line('用戶不存在');
end;
create or replace procere p2
(
p_username in users.username%type,p_password in users.password%type
)as
begin
insert into users values(p_username,p_password);
end;

B. oracle中的存儲過程怎麼寫

Oracle存儲過程寫法實例

總結項目中寫的存儲過程例子:
Oracle存儲過程基本語法 存儲過程
1 CREATE OR REPLACE PROCEDURE 存儲過程名
2 IS/AS
3 BEGIN
4 NULL;
5 EXCEIPTION;
6 END;

1、創建存儲過程,後面可用is或者as:
create or replace procere PRO_COMPLAIN_TEMPLATE as

2、定義變數,此處用到了%TYPE和%ROWTYPE,參考 /database/201211/168564.html ,另外定義了一個游標,TEM_INSTANCE TEMPLATE_CUR%ROWTYPE這個類型定義必須要在游標定義之後:
NEED_DO_FOR_ZL INTEGER;
CURRENT_MAX_ID MEMO_TEMPLET.TEMPLET_ID%TYPE;
CURSOR TEMPLATE_CUR IS SELECT TEMPLET_NAME, TEMPLET_CONTENT FROM SYS_COMPLAINT_TEMPLET;
TEM_INSTANCE TEMPLATE_CUR%ROWTYPE;
3、begin開始塊:
begin

4、該插入語句使用了DBLINK,還有使用DBMS_OUTPUT.put_line('列印信息')進行信息輸出:
insert into MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT, TEMPLET_TYPE, TEMPLET_MEMO) (SELECT * FROM MEMO_TEMPLET@COMPANY);

SELECT COUNT(*) INTO NEED_DO_FOR_ZL FROM SYS_COMPLAINT_TEMPLET;
IF(NEED_DO_FOR_ZL > 0) THEN
DBMS_OUTPUT.put_line('列印信息');
SELECT MAX(TEMPLET_ID)+1 INTO CURRENT_MAX_ID FROM MEMO_TEMPLET;
DBMS_OUTPUT.put_line('MEMO_TEMPLET最大ID' || CURRENT_MAX_ID);
FOR TEM_INSTANCE IN TEMPLATE_CUR LOOP
INSERT INTO MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT,
TEMPLET_TYPE, TEMPLET_MEMO) VALUES (CURRENT_MAX_ID,
TEM_INSTANCE.TEMPLET_CONTENT, '7', NULL);
CURRENT_MAX_ID := CURRENT_MAX_ID + 1;
DBMS_OUTPUT.put_line(TEM_INSTANCE.TEMPLET_CONTENT);
END LOOP;
END IF;
COMMIT;
www.2cto.com
4、exception塊,使用WHEN OTHERS THEN,其中用raise可顯示錯誤信息:
exception
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('sqlcode : ' ||sqlcode);
raise;
ROLLBACK;
IF TEMPLATE_CUR%ISOPEN THEN
CLOSE TEMPLATE_CUR;
END IF;
DBMS_OUTPUT.put_line('列印信息');
end;

註:關於游標的使用,如果像本例中使用for循環去遍歷游標的話則不需要顯式的去用open/close
cursor打開和關閉游標,此處會自己處理,如果使用fetch
into的話就需要顯式開關游標,另外任意執行一個update操作,用隱式游標sql的屬性%found,%notfound,%rowcount,%isopen觀察update語句的執行情況,也可以使用來判斷游標狀態,如IF
TEMPLATE_CUR%ISOPEN THEN。

C. ORACLE如何創建存儲過程,詳細例子。

--創建存儲過程 IN_SHEETID 為輸入參數CREATE OR REPLACE <a class="-highlight" href="https://www..com/s?wd=PROCEDURE&tn=44039180_cpr&fenlei=-EUBtkP1n1n1RdPjTvP1bvrH6kP10L" target="_blank">PROCEDURE</a> ST_RECEIPT(IN_SHEETID VARCHAR2) ISBEGIN--將 receipt0表中數據插入 receiptINSERT INTO RECEIPTSELECT * FROM RECEIPT0 WHERE SHEETID = IN_SHEETID;--更新receipt表中Flag值UPDATE RECEIPT SET FLAG = 100 WHERE SHEETID = IN_SHEETID;--INSERT INTO RECEIPTITEMSELECT * FROM RECEIPTITEM0 WHERE SHEETID = IN_SHEETID;--刪除ReceiptItem0表數據DELETE FROM RECEIPTITEM0 WHERE SHEETID = IN_SHEETID;--刪除 receipt0表數據DELETE FROM RECEIPT0 WHERE SHEETID = IN_SHEETID;<a class="-highlight" href="https://www..com/s?wd=END&tn=44039180_cpr&fenlei=-EUBtkP1n1n1RdPjTvP1bvrH6kP10L" target="_blank">END</a>;--調用存儲過程BEGINST_RECEIPT('ys141128');<a class="-highlight" href="https://www..com/s?wd=END&tn=44039180_cpr&fenlei=-EUBtkP1n1n1RdPjTvP1bvrH6kP10L" target="_blank">END</a>;--或者EXEC ST_RECEIPT('ys141128');

D. 急求!怎麼建立oracle存儲過程(實例)

create or replace PROCEDURE st_receipt(p_sheetid varchar2(16))
AS
BEGIN
insert into receipt select * from receipt0 where sheetid=p_sheetid ; --將 receipt0表中數據插入 receipt
update receipt set Flag=100 wheresheetid=p_sheetid; --更新receipt表中Flag值

insert into ReceiptItem select * from ReceiptItem0 where sheetid=p_sheetid ;

delete from ReceiptItem0 where sheetid=p_sheetid ;--刪除ReceiptItem0表數據
delete from receipt0 where sheetid=p_sheetid ; --刪除 receipt0表數據
end ;

exec st_receipt('ys141128')

E. oracle資料庫存儲過程實例

創建存儲過程的語句如下:
CREATE[OR REPLACE] PROCEDURE<過程名>
<參數1>,「方式l]<數據類型1>,
<參數2>,[ 方式2]<數據類型2>,
……)
IS|AS (is或as完全等價)
BEGIN
PL/SQL過程體
END<過程名>

例如,下面是一個刪除表的存儲過程:

--參數:tableName 要刪除的表名
create or replace procere del_table(tableName varchar2) as
--定義變數
sql_del_table long;
begin
--構造sql語句
sql_del_table := 'drop table ' || tableName;
--執行
EXECUTE IMMEDIATE sql_del_table;

end del_table;

F. oracle存儲過程實例求教

首先說下本人最近在學習存儲過程 網上的資料也比較的少和片面。搞了很久了還是沒有學好(比較笨吧)。現在來求助高手 先謝了!! 現在有表信息如下:表名:user表欄位:autoid number,username varchar2(32),password(32),email(32)四個欄位明顯autoid是主鍵 要求:寫出地此表的crud操作。及java代碼調用存儲過程的代碼 都貼出來 代碼應該不是很多 查詢要求要返回表中的所有的記錄。資料庫必須是Oracle的 代碼盡量寫的詳細一些。分數的話不成問題的只要寫的夠好夠詳細的話分是不成問題的。

G. 誰能給我一個oracle存儲過程的例子

你這個寫成存儲過程有什麼用的? 檢索了一些數據出來,你應該是要返回這些數據吧?應該要寫個函數返回遊標吧

-- 先創建一個自定義類型
create or replace package types as
type cur_type is ref cursor;
end;

-- 返回遊標的函數
CREATE OR REPLACE FUNCTION f_test(
in_userId VARCHAR2 ,
in_userName VARCHAR2 )
RETURN types.cur_type
AS
v_cursor types.cur_type;
v_sql VARCHAR2(2000);
BEGIN
v_sql := 'select * from Users where 1 = 1';

IF in_userName IS NOT NULL THEN
v_sql := v_sql||'and UserName = '''||in_userName||'''';
END IF;

IF in_userId IS NOT NULL THEN
v_sql := v_sql||'and UserID = '''||in_userId||'''';
END IF;

OPEN v_cursor FOR
v_sql;

RETURN v_cursor;

END f_test;

H. oracle存儲過程參數實例

可以調用 沒問題的 只要當前用戶可以訪問這個table

I. 求兩個oracle存儲過程例子

create or replace procere proc_create is (固定語法定義存儲過程名稱)
begin
create table user_info (

userid number(5) primary key,

username varchar2(20),

password varchar2(20)

);--(建表完成,這個就不用解釋了吧)

insert into user_info values('AA','123');
insert into user_info values('BB','123');
end proc_create;--(創建表的存儲過程完成,注意格式即可,begin下面寫正常的sql語句就ok了)

後面的那個你理解之後,自己先試試能不能寫出來再說 盡量自己解決了撒。
另外還可以創建帶參數的存儲過程,多查查資料
不明白再問哈

熱點內容
8歲講編程 發布:2025-01-11 08:02:41 瀏覽:129
迅雷的tracker伺服器地址 發布:2025-01-11 08:02:07 瀏覽:507
csgo天津伺服器ip 發布:2025-01-11 07:57:36 瀏覽:613
中國天氣android 發布:2025-01-11 07:56:53 瀏覽:464
伺服器負載均衡怎麼用 發布:2025-01-11 07:54:04 瀏覽:129
雲列印伺服器硬體 發布:2025-01-11 07:44:56 瀏覽:769
怎麼在手機上更改wifi密碼 發布:2025-01-11 07:37:26 瀏覽:337
開機啟動serviceandroid 發布:2025-01-11 07:35:24 瀏覽:524
天龍八部腳本設置自動喊話 發布:2025-01-11 07:31:37 瀏覽:310
硒標准溶液配置為什麼要加鹽酸 發布:2025-01-11 07:27:51 瀏覽:253