Oracle中使用儲存過程實現幾個例項 入門級

2021-09-09 08:48:30 字數 3520 閱讀 4439

剛開始我也不會寫oracle的儲存過程,以前頂多用過sqlserver,工作時偶爾要處理上萬條的資料,有時候不得不手動處理,有時候,可以想辦法使用工具解析匯入資料庫,雖然儲存過程不能很好的處理海量資料,這只是我業餘看到就學習總結了一下。由淺入深的實現了幾個例項,看完了,就可以簡單的掌握oracle儲存過程的些許語法了。

1. 先在庫里新建個表

create  table  new_table_test (num1 int,num2 int,num3 int)
2.簡單的不帶迴圈的插入資料到表裡

create or replace procedure myproc

isnum integer;

begin

num:=1;

begin

insert into new_table_test values(num,2,3);

end;

end myproc;

注意:變數num型別為integer;

3.在2的基礎上實現變數值賦值時的處理:

create or replace procedure myproc

isnum integer;

begin

num:=1;

begin

num:=num+1;

insert into new_table_test values(num,2,3);

end;

end myproc;

注意:不要多加個set,變數記得加個冒號。

4.使用while迴圈進行插入1000行資料

知識點:while迴圈使用loop,最後使用end

loop;結束,對於首變數賦值時不要忘記加冒號。

等號左邊的變數也要加冒號。

create or replace procedure myproc

isnum integer;

begin

num:=1;

while num <= 1000 loop

begin

insert into new_table_test values(num,2,3);

num:=num+1;

end;

end loop;

end myproc;

5.呼叫儲存過程

【call 儲存過程名】呼叫儲存過程

call myproc();
6.用for…in 使用cursor.

知識點:列印游標的值的方式是:cursor.列名。

create or replace procedure certifipro

as cursor cursor_1 is select distinct certificateid from fidatadistilledinfo;

column1 varchar2(7);

begin

forcolumn1 in cursor_1 loop

begin

dbms_output.put_line(column1.certificateid);

end;

end loop;

end certifipro;

–呼叫儲存過程

call certifipro();
7.使用cursor,cursor的結果集是下乙個sql語句的條件,列印一列

create or replace procedure certifipro

as cursor cursor_1 is select distinct certificateid from fidatadistilledinfo;

column1 varchar2(7);

column2 varchar2(50);

begin

forcolumn1 in cursor_1 loop

begin

select

certificatename into column2 from ficertificatetypedef where

certificateid=column1.certificateid;

dbms_output.put_line(column2);

end;

end loop;

end certifipro;

–呼叫儲存過程

call certifipro();
8.使用cursor,cursor的一列結果集是下乙個sql語句的條件,列印全部列

----先建立乙個儲存查詢的最後結果的表結構:

create table new1 as select * from ficertificatetypedef where 1<>1;
–儲存過程,將結果儲存到乙個表,可以儲存全部的資訊。這裡不可以單選幾列。與insert語句的格式有關係。必須儲存全部。

create or replace procedure certifipro

as cursor cursor_1 is select distinct certificateid from fidatadistilledinfo;

column1 varchar2(7);

begin for column1 in cursor_1 loop

begin

insert into new1 select * from ficertificatetypedef where certificateid=column1.certificateid;

end;

end loop;

end certifipro;

–呼叫儲存過程

call certifipro();
檢視得到的結果集new1:

select * from new1;
9.刪除儲存過程

drop procedure 儲存過程名;
以上儲存過程都可正常執行,通過學習語法,簡單的做了上面的練習,對於儲存過程的使用可以簡單掌握。

在練習時,對於命名我只簡單的命名,便於用於測試,未按照標準命名,如果在自己的工作中使用,還是要按照命名規範命名。

儲存過程的使用,一點語法錯誤,都會導致執行不成功,這種方式感興趣的可以研究一下,在工作中,有的還是會用到儲存過程進行批處理。

oracle中使用儲存過程實現分頁

oracle中使用儲存過程實現分頁 編寫分頁儲存過程 要求可以輸入表名稱,每頁顯示的記錄數,當前頁,返回總記錄數,總頁數,和結果集 1定義乙個包在包中定義游標儲存結果集。create package fenye package is type ref cursor is ref cursor typ...

C 中使用Oracle 儲存過程筆記

c 中使用oracle 儲存過程筆記 1.呼叫包含out in out型別引數的儲存過程 儲存過程 flag out integer out 只具備輸出功能 in out 為輸入 輸出型 呼叫方法 oracleparameter retpar new oracleparameter channeli...

hibernate中使用儲存過程

hibernate中使用儲存過程 如果底層資料庫 如oracle 支援儲存過程,也可以通過儲存過程來執行批量更新。儲存過程直接在資料庫中執行,速度更加快。在oracle資料庫中可以定義乙個名為batchupdatestudent 的儲存過程,如下 create or replace procedur...