--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 二.刪除資料...