請問我用oracle寫了包裡面有函式和儲存過程

2022-02-21 18:26:28 字數 5544 閱讀 8562

1樓:匿名使用者

驗證下不就知道了。

如果你的過程和函式都沒有語法錯誤就是對的。

包:包含表頭和body資訊。

將你的函式和過程頭部資訊放到包中定義。呼叫就可以直接呼叫包裡面的定義。

比如:包:你的包名a.spc

create or replace package a

isprocedure create_ae_out_file (p_gr_hdr_id in varchar) ;

end;

body:

create or replace package body a

isprocedure create_ae_out_file(p_gr_hdr_id in varchar)

isv_gr_hdr_id cosgx.cos_gr_hdr.gr_hdr_id%type;

vfile varchar2(200);

begin

--你的實現邏輯

end;

end;

函式也是一樣的。都需要在包裡面定義

用sqlplus就可以自動生成的

2樓:匿名使用者

用toad,plsqldeveloper相關開發工具除錯就好了嗎。這是我經常用的開發工具。很簡單。希望對你 有幫助。

3樓:商州節度使

編譯啊,編譯通過就行了啊;

4樓:匿名使用者

使用execute或exec 語句執行儲存過程驗證就知道是否正確了。

oracle用包還是用儲存過程比較好,效能上有什麼區別

5樓:

包和儲存過程是兩個不同的概念。

包可以理解成類似面嚮物件語言中的名稱空間,而儲存過程可以放到包內,這樣管理比較方便,而且不會有命名衝突的問題。包內還可以有函式,型別定義等等其他內容。

當然,儲存過程可以不放到任何包內的。

oracle的儲存過程和包有什麼區別,分別在什麼情況下使用啊

6樓:匿名使用者

包包含於過程,這個東西就好比包是一個資料夾,而過程和檢視,函式啊什麼的都是裡面的檔案。要是在什麼情況下使用的話還真是因人而意,如果包裡面有過程的話,直接包名.過程名就可以使用了!

7樓:匿名使用者

包裡面有多個儲存、函式,

當某類儲存,或者函式,都是為某一專案的設計的,可以把它們放在一個包裡面,這樣便於管理

oracle函式和儲存過程有什麼區別

8樓:匿名使用者

一、主體不同

1、函式:當需要分析資料清單中的數值是否符合特定條件時,使用資料庫工作表函式。

2、儲存過程:是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,一次編譯後永久有效。

二、特點不同

1、函式:只能返回一個變數,可以嵌入sql中和儲存過程中使用。

2、儲存過程:使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行。儲存過程是資料庫中的一個重要物件。在資料量特別龐大的情況下利用儲存過程能達到倍速的效率提升。

三、功能不同

1、函式:不能用臨時表,只能用表變數,函式不能執行一組修改全域性資料庫狀態的操作。可以作為查詢語句的一個部分來呼叫,由於函式可以返回一個表物件,所以在查詢中位於from關鍵字後面。

2、儲存過程:儲存過程需要讓sql的query可以執行,儲存過程可以返回引數,如記錄集。sql語句中不可以含有儲存過程。

9樓:手機使用者

1. 返回值的區別,函式有1個返回值,而儲存過程是通過引數返回的,可以有多個或者沒有

2.呼叫的區別,函式可以在查詢語句中直接呼叫,而儲存過程必須單獨呼叫.

函式一般情況下是用來計算並返回一個計算結果而儲存過程一般是用來完成特定的資料操作(比如修改、插入資料庫表或執行某些ddl語句等等)

引數的返回情況來看:

如果返回多個引數值最好使用儲存過程,如果只有一個返回值的話可以使用函式;

從呼叫情況來看:

如果在sql語句(dml或select)中呼叫的話一定是儲存函式或儲存的封裝函式不可以是儲存過程,但呼叫儲存函式的時候還有好多限制以及函式的純度等級的問題.

oracle函式和儲存過程最大的區別就在於,函式必須帶上一個return返回值,後面跟的是返回值的型別,而儲存過程可以不帶任何返回值。

另外,儲存過程和函式同樣支援in,out,in out這三種型別的引數,對應的是分別指明輸入性的引數、輸出型的引數、輸入輸出型的引數。也就是說如果我們需要返回多個值,除了可以使用儲存過程來實現之外,也可以用函式來實現,方法是你將其中一個用return來返回,其他就指明該資料為out引數就可以了。

oracle中儲存過程和函式都可以返回值,但是函式必須要返回值,並一般只返回一個值,而儲存過程則沒有這個限制。從一般應用上來看,如果不需要返回值或者需要多個返回值,使用儲存過程,如果只用一個返回值,就使用函式,從一般程式設計師的習慣上來看,這樣更符合思維。

10樓:育知同創教育

oracle中儲存過程和函式的區別如下:

1.儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。

2.對於儲存過程來說可以返回引數,而函式只能返回值或者表物件。

3.儲存過程一般是作為一個獨立的部分來執行,而函式可以作為查詢語句的一個部分來呼叫,由於函式可以返回一個表物件,因此它可以在查詢語句中位於from關鍵字的後面。

4.當儲存過程和函式被執行的時候,sql manager會到procedure cache中去取相應的查詢語句,如果在procedure cache裡沒有相應的查詢語句,sql manager就會對儲存過程和函式進行編譯。

11樓:

最簡單的解釋是 , 函式返回值,而儲存過程不返回。

如何讓oracle 執行一個函式,我想要的是那個函式裡面的功能可以執行起來,怎麼去呼叫他哦

12樓:西門公子慶

執行函式的話:

exec 函式名(可能存在的引數);

oracle中怎麼執行帶有輸出引數的儲存過程,在程式中我知道怎麼呼叫,

13樓:刺友互

1、新建一個儲存過程(procedure)。

2、修改儲存過程,這個儲存過程有一個輸入引數(pid)跟一個輸出引數(name),即通過使用者id查詢使用者名稱稱並將名稱返回。

3、除錯儲存過程,找到剛剛建立的儲存過程右擊並點選【test】選項。

4、在開啟的視窗內修改id值並點選左上角的倒三角形圖示開始除錯。

5、按【ctrl+n】進行單步進入除錯,【ctrl+o】單步除錯,【ctrl+t】退出除錯,也可以點選除錯工具進行除錯。

6、變數檢視,在視窗下方可輸入變數名稱觀察變數的變化情況。

7、除錯完成後就可以檢查除錯結果。

14樓:drank傾城

--儲存過程的建立

set serveroutput on;

create or replace procedure select_dept(

num_deptno in number,--定義in模式變數,要求輸入部門編號

var_dname out dept.dname%type,--定義out模式變數,可以儲存部門名稱並輸出

var_loc out dept.loc%type) is

begin

select dname,loc into var_dname,var_loc from dept

where deptno = num_deptno;--檢索某個部門編號的部門資訊

exception

when no_data_found then--若select語句無返回記錄

dbms_output.put_line('該部門編號的不存在');--輸出資訊

end select_dept;

/--儲存過程的呼叫

--注意:含有輸出引數的儲存過程呼叫,需要先宣告與out引數型別相容的變數

set serveroutput on;

declare

var_dname dept.dname%type;

var_loc dept.loc%type;

begin

select_dept(10,var_dname,var_loc);

dbms_output.put_line(var_dname||'位於:'||var_loc);

end;/

15樓:

下面說明在sql developer中的做法,右擊儲存結構的檔名,在選單中選擇run,會跳出一個叫run pl/sql的頁面,在下方寫著pl/sql block 的地方修改輸入引數

spno =>spno 修改為spno =>真實的值

具體可以參看help中的run/debug/profile pl/sql

16樓:匿名使用者

sql> create or replace procedure sp_pro10

2 (spno in number,spname out varchar2) is

3 begin

4 select 'ename' into spname from dual;

5 end;

6 /

過程已建立。

sql> set serveroutput onsql> declare

2 spno number;

3 spname varchar2(10);

4 begin

5 sp_pro10 (spno, spname);

67 dbms_output.put_line(spname);

8 end;

9 /

ename

pl/sql 過程已成功完成。

oracle中定義儲存過程和函式,到底有什麼用?

17樓:匿名使用者

1.減少應用對資料庫的請求次數。

2.減少應用伺服器從資料庫獲取資料的數量,減少網路吞吐量。

3.減少應用伺服器計算壓力。

18樓:西門公子慶

函式一般都是對資料的簡單處理,可以方便複用。

舉個簡單例子,

比如要對一個數字n做比較複雜的運算,而且需要多次使用,那麼建立函式get_n(number);

在每次需要這個結果的時候都可以呼叫函式來處理比如 select get_n(n) from dual;

而不需要每次都把整個計算過程都做一次。

儲存過程主要是處理一些複雜的業務,比如一個生成訂單的過程,我需要記錄訂單表,日誌表,更新客戶資訊表,更新客戶積分等等的操作。

那可以把這些操作都放在一個儲存過程中實現。

每次生成訂單,只需要通過程式呼叫一下儲存過程就可以了。而不需要通過程式去多次連結資料庫,每次執行對一個表的操作。

請問我晚上(幾種只有我人)用鑰匙鎖門,再從裡面反鎖!外面的人還能偷偷摸摸開啟門進來嗎

如果有人進來,有四種可能 1.鎖壞了,你不知道2.人家有 3.人家有超能力 4.你在夢裡鎖的門 從裡面用鑰匙把門鎖上外面的用鑰匙還能開啟嗎 15 從裡面用鑰匙鎖門是可以開啟的。和在外面用鑰匙鎖門是一個意思,所以能開啟。一般門上面不是有個小按鈕嗎,把那個按下去或是扭動,外面就打不開了。你在裡面想幹啥都...

請問我用刮痧板刮手指頭的時候感覺裡面有像小顆粒一樣的東西個楞

屬於經絡不通,多刮刮就會好些,中指是頸部的反應區,如果有太多的顆粒狀東西的話說明你頸部不好,沒事多刮刮就行了。這是哪首歌的歌詞?我措手不及只能愣在那裡 天下.英雄 文 咖啡杯裡的茶 阿杜的。他一定很愛你。改編 他一定很愛狙 他一定很愛狙 cmf我躲在b區 手握著狙擊 想狙幾個埋彈的t 你越走越近 有...

請問我用黑莓合適麼

黑莓的系統沒什麼可研究的 這麼跟樓主說吧,你的預算以及你的需求,如果用黑莓,建議你考慮8520。這個機器價效比不錯,目前 的 大約在1500左右,多 的支援很好。而且黑莓的簡訊還是很不錯的,無論介面還是輸入法。樓主作為大學生,我還是推薦用android系統的哦手機,樓主的預算我覺得里程碑或者g3都不...