一直沒有使用過儲存過程
今天特意學習一下oracle的儲存過程
一步一步學習,今天學習如下:
建立乙個最簡單的儲存過程
create or replace procedure test_xg_p1 is
begin
dbms_output.put_line('hello world! this is the first procedure');
end;
建立乙個帶輸入輸出引數的儲存過程:把輸入的資料傳給輸出引數
create or replace procedure test_xg_p2(a in number,x out number) is
begin
x:=a;
end test_xg_p2;
建立乙個邏輯判斷的儲存過程,幷包含輸入輸出引數:近似分數的登記判斷
create or replace procedure test_xg_p3(a in number,x out varchar2) is
begin
if a>=90 then
begin
x := 'a';
end;
end if;
if a<90 then
begin
x:='b';
end;
end if;
if a<80 then
begin
x:='c';
end;
end if;
if a<70 then
begin
x:='d';
end;
end if;
if a<60 then
begin
x:='e';
end;
end if;
end test_xg_p3;
建立乙個帶迴圈邏輯的儲存過程:近似累加函式
create or replace procedure test_xg_p4(a in number,x out varchar2) is
tempresult number(16);
begin
tempresult :=0;
for tempa in 0..a loop
begin
tempresult := tempresult + tempa;
end;
end loop;
x:=tempresult;
end test_xg_p4;
建立乙個能從資料庫中特定表中返回資料的儲存過程:
create or replace procedure test_xg_p5(x out varchar2) is
tempresult varchar2(1024);
begin
tempresult := 'start->';
select hotelid||hotelname into tempresult from hotel where hotelid =10041764;
x:=tempresult;
end test_xg_p5;
建立乙個能使用游標的帶迴圈的儲存過程:
create or replace procedure test_xg_p6(x out varchar2) is
tempresult varchar2(10240);
cursor cursor1 is select * from hotel where hotelname like '浙江%';
begin
tempresult := 'start->';
for cursor_result in cursor1 loop
begin
tempresult :=tempresult||cursor_result.hotelid||cursor_result.hotelname;
end;
end loop;
x:=tempresult;
end test_xg_p6;
學習儲存過程
儲存過程定義資訊檢視 column text format a30 column name format a20 select from user source where name select emp 修改 修改和建立一樣就是加上or replace 刪除儲存過程 drop procedure ...
mysql 儲存過程學習 mysql儲存過程學習
一 mysql建立乙個修改表字段的儲存過程 drop procedure if exists pr test create procedure pr test begin declare var int declare var1 int set var 416 set var1 420 while ...
儲存過程的學習(1)
儲存過程的特點 1.儲存過程是預編譯過的,並且經過優化後儲存於sql記憶體中,使用時無需再次編譯,提高了工作效率。2.儲存過程的 直接存放於資料庫中,一般有客戶端直接通過儲存過程的名字進行呼叫,減少了網路流量,加快了系統執行速度,例如在進行百萬以上的大批量資料查詢的時,使用儲存過程分頁要比其他方式分...