oracle巢狀子程式

2021-10-06 16:38:35 字數 1582 閱讀 3818

劍破冰山學習筆記:

巢狀子程式的說明:

將乙個子程式定義在乙個pl/sql塊中的,該子程式稱為巢狀子程式。

•只有定義在具名塊中,才能儲存到資料庫中,匿名塊裡是無法儲存到資料庫的

區別–函式和過程是schema級別的子程式,包裡的函式和過程,是package級別的子程式。這兩類都不是巢狀子程式。

宣告–巢狀子程式可以同時宣告和定義,也可以先宣告,然後在同乙個pl/sql塊內再定義。後者稱為」前置宣告「。

具體示例:

在匿名塊中使用。

declare

function aa(a number) return number

asbegin

return a*5;

end;

begin

dbms_output.put_line(aa('2'));

end;

直接宣告並且呼叫。

可以對函式進行重構,也就是定義兩個相同的名稱。

declare

function aa(a number) return number

asbegin

return a*5;

end;

function aa(a varchar2)return number

asbegin

return to_number(a)*15;

end;

begin

dbms_output.put_line(aa('2'));  --修改此處可以看出區別

end;

也可以在函式和儲存過程的定義中使用,一下為儲存過程的例子:

create or replace procedure calc********areagirth_1 (a number ,b number ,ang number)

asfunction calcareabytwoside_ang(a number,b number,ang number) return number

asrad number;

s number;

begin

rad:=ang/180*(asin(1)*2);

s:=round(a*b*sin(rad)/2,2);

return s;

end;

function calcgirthbytwosides_ang(a number ,b number, ang number) return number

asrad number;

c number;

g number;

begin

rad:=ang/180*(asin(1)*2);

c:=sqrt(a**2+b**2-2*a*b*cos(rad));

g:=round(a+b+c,2);

return g;

end;

begin

dbms_output.put_line('area:' || to_char(calcareabytwoside_ang(a,b,ang)) || '   girth:'|| to_char(calcgirthbytwosides_ang(a,b,ang)));

end;

ReportViewer 巢狀子報表

1.aspx 頁面 reportviewer1 subreportprocessing方法繫結子報表資料來源 頁面註冊 register assembly microsoft.reportviewer.webforms,version 10.0.0.0,culture neutral,publick...

Oracle 子程式內聯

start 如果子程式 a 呼叫 b,內聯可以把 b 的 合併到 a 中,從而減少子程式呼叫,提高效能,下面是乙個簡單的例子。子程式 a procedure a isbegin 指定下面的子程式 b 內聯 pragma inline b,yes b 1 注意此處的子程式不會內聯 b 2 end a ...

Oracle 內建子程式簡介

大學生兼職支援 url sql set serveroutput on sql remark 內建程式包 sql remark 常用的內建程式包如下 sql remark dbms out pl sql中的輸入和輸出顯示 sql remark dbms job 任務排程服務 sql remark d...