ORACLE的儲存過程都用在什麼地方?最好能舉幾個工作中的例子

2022-03-14 04:10:17 字數 3012 閱讀 9577

1樓:暗流在洶湧

儲存過程最多的用於c/s兩層架構模式下,用於在後台處理業務邏輯和資料。

前台開發工具例如powerbuilder可以實現介面展示和操作流程,涉及到後台某個集中處理資料、或者大批量資料的業務邏輯,就在oracle後台儲存過程裡面來實現了。

解除安裝儲存過程裡面的東西,往往是不需要互動的一段處理過程,例如前台介面是「結算」業務,輸入了結算時間段和結算單位以及相關的控制引數例如結算方法等,把這些引數傳給後台儲存過程,後台儲存過程裡面可以編制相關的結算處理程式,根據輸入的單位、時間、方法型別等引數,來進行集中處理,這個過程是不需要與前台進行互動的,這裡可以處理很複雜的業務,例如結算會涉及到多個表如單位基本資訊表、單位結算資訊表、明細表等等,可以在儲存過程裡面集中實現處理,然後把結果返回給前台,前台根據處理結果是否成功,決定是否進行提交(commit)操作。

oracle,在儲存過程中能巢狀儲存過程麼?最好舉個例子。

2樓:匿名使用者

你指的是定義的巢狀吧。這樣就可以用乙個procedure定義符合軟降工程又比較複雜的邏輯了。

procedure prc_main (p_msg varchar2) is

procedure prc_inner (p_msg varchar2) is

begin

dbms_output.put_line ('this is inner: ' || p_msg);

end;

begin

prc_inner(p_msg);

end;

/不過如果你的程式規模大,還推薦你看看package的語法。

3樓:匿名使用者

交流交流 ,何必鑽牛角?

oracle中的儲存過程,有什麼作用,以及怎麼在**中使用?

4樓:

定義:儲存過程(stored procedure )是一組為了完成特定功能的sql 語句

集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數

(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要

物件,任何乙個設計良好的資料庫應用程式都應該用到儲存過程。

儲存過程是由流控制和sql 語句書寫的過程,這個過程經編譯和優化後

儲存在資料庫伺服器中,應用程式使用時只要呼叫即可。在oracle 中,

若干個有聯絡的過程可以組合在一起構成程式包。

優點:儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般sql語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。

2.當對資料庫進行複雜操作時(如對多個表進行update、insert、query、delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。

3.儲存過程可以重複使用,可減少資料庫開發人員的工作量。

4.安全性高,可設定只有某使用者才具有對指定儲存過程的使用權。

proc = connection.preparecall("");

proc.setstring(1, 「」);設定傳入引數

proc.registeroutparameter(4, types.varchar);註冊傳出引數

proc.execute();執行過程

proc.getstring(4)獲取結果

5樓:

儲存過程是命名程式塊,其實質是通過一系列的sql語句,根據傳入的引數,可以完成比單個sql語句更複雜的功能。舉個例子:想要向一張表中插入大量資料(5萬),就可以通過寫乙個儲存過程直接呼叫,方便很多,而且儲存過程可儲存。

6樓:匿名使用者

儲存過程是為了讓你把東西保留 **是為了鏈結

7樓:匿名使用者

樓上也不知道從哪扒下來的,一看lz就是初學,舉點例子不行嗎?

比如建立個測試表

create table test

(id int,

name varchar2(10),

counts int);

insert into test values (1,'張三',100);

insert into test values (2,'李四',200);

commit;

現在給你出個題目是

查詢所有人加在一起的counts是多少

建立儲存過程

create or replace p_test --建立儲存過程,

asv_counts int;--定義變數

begin --開始

select sum(counts) into v_counts from test;--將得到的結果放到變數裡

dbms_output.put_line(v_counts);--將結果列印輸出

end;--結束

執行這種不帶輸入引數的

begin

p_test;

end;

然後你檢查下結果

再給你建立乙個帶輸入引數的

題目是,查詢id為1的人名是什麼

create or replace p_test1

(v_id int)

asv_name varchar2(10);

begin

select name into v_name from test where id=v_id;

dbms_output.put_line(v_name);

end;

執行時這樣

begin

p_test1(1);

end;

第2個我沒給你寫注釋,你看你自己應該能理解吧

補充一下,儲存過程不一定只是執行查詢,也可以做刪除或者修改等sql語句,總體來說就是幾個或n個sql語句的集合,來完成系統內某些特定的需求,這些需求可以是乙個sql搞定的,也可以是多個sql組合的

oracle 寫乙個求平均數的儲存過程 需要用到游標的 舉個例子就行

oracle的儲存過程不能使用drop語句嗎

儲存過程裡面,一般只寫 dml 的語句。也就是基本的 select insert,delete update 這一類的語句。如果你要在儲存過程裡面,執行 ddl 語句。也就是 create,alter,drop 這一類的語句。那麼需要使用動態 sql 來處理。也就是execute immediate...

oracle怎麼給儲存過程建立同義詞

一般操作是 1.create or replace synonym a1fora2 testdb 2.grant connect to someusergrant dba to someusergrant resource to someuser3.grant all on 表 to someuse...

oracle定義儲存過程時什麼時候需要使用

oracle 的儲存過程裡沒有declare的語法,觸發器和plsql塊才是declare 如果要定義變數,後面直接跟is的 create or replace procedure c ispara number begin end 你在寫儲存過程的時候是 create or replace p n...