Oracle學習總結 二

2021-07-22 19:34:38 字數 1252 閱讀 1097

--company表的某id對應money乘以0.02

create

or replace procedure

compute

( c_id in company.id%type,

money out company.m%type,

)isbegin

select

m*0.02 into

money

from

company

cwhere

c.id=c_id;

dbms_output.put_line (money);

end compute;

注:

- 其中compute是儲存過程名;

- or replace代表若同名儲存過程存在,則替換掉舊的儲存過程;

- 傳遞引數時,in代表按值傳入,並且它不允許在儲存過程中被重新賦值,out代表引用的方式傳出,in out代表同時具備兩種功能,省略預設為in;

- 變數的型別,可以指定為number或char等,也可以用%type——代表和某錶中某字段的型別相同(如本例所示)

- 儲存過程中的select語句必須有into,代表把查詢的結果放入某變數中;

- dbms_output.put_line (out_para)

用來檢視傳出的引數,注意該語句必須在begin和end語句之間才能正確執行;

create

table test2

( n number

);declare

i number;

max_row number;

begin

select

count(*) into max_row from company;

for i in 1..max_row loop

insert

into test2 values(i);

end loop;

end;

我們先定義了乙個變數,用來儲存company的行數,然後通過傳遞行號,對新錶的每一行進行插入操作,即便company表發生變動,我們也無需修改sql。

update 表名 set 列名=to_char(round(表名.列名,2),'fm9999999999999999.00');
前提是該列名是number型別,如果是字元型別,自然就會報錯。

oracle學習總結 二

一.自增型id 1.首先建立 sequence create sequence seqmax increment by 1 2.得到乙個id select seqmax.nextval id from dual 3.若要刪除乙個sequence drop sequence seqmax 二.刪除資料...

oracle學習總結 二

一.自增型id 1.首先建立 sequence create sequence seqmax increment by 1 2.得到乙個id select seqmax.nextval id from dual 3.若要刪除乙個sequence drop sequence seqmax 二.刪除資料...

oracle學習總結 二

一.自增型id 1.首先建立 sequence create sequence seqmax increment by 1 2.得到乙個id select seqmax.nextval id from dual 3.若要刪除乙個sequence drop sequence seqmax 二.刪除資料...