Oracle儲存過程基礎內容

2022-05-09 23:24:01 字數 3135 閱讀 7197

create or replace procedure firstpro

asbegin

dbms_output.put_line('hello word, my name is stored procedure');

end;

裡面只有乙個輸出語句

呼叫begin

firstpro();

end;

create or replace procedure mydemo02

asname varchar(10);

age int;

begin

name:='xiaoming';

age:=18;

dbms_output.put_line('name='||name||', age='||age);

end;

在as中宣告變數,在

begin

中賦值,

輸出時通過||符號達到連線字串的功能

create or replace procedure mydemo03(name in varchar,age in int)

asbegin

dbms_output.put_line('name='||name||', age='||age);

end;

呼叫時再賦值

begin

mydemo03('xiaoming',18);

end;

create or replace procedure mydemo04(name in varchar,age in int)

asbegin

dbms_output.put_line('name='||name||', age='||age);

end;

呼叫declare

name varchar(10);

age int;

begin

name:='xiaoming';

age:=18;

mydemo04(name=>name,age=>18);

end;

呼叫的時候如果需要變數,就可以在

declare

中宣告,

然後執行的時候把變數值通過

=>

從右向左賦值給引數

,要用都要用

,此時不能

mydemo04(name=>name,18)

create or replace procedure mydemo05(name out varchar,age in int)

asbegin

dbms_output.put_line('age='||age);

select 'xiaoming' into name from 名字表;

end;

in就是呼叫方法時賦值

,是來自方法外的值,而

out是要自己查詢出的值

,在呼叫的時候就已經有了

,而已賦值給其他變數

declare

name varchar(10);

age int;

begin

mydemo05(name=>name,age=>10);

dbms_output.put_line('name='||name);

end;

這個name是

out,

人家在內部查詢出來

,呼叫的時候就有值了

,然後賦值給接收變數

,下面還能輸出,而

in只能是呼叫時賦值

.create or replace procedure mydemo07(ids in int, username in varchar,userpass in varchar, userage in int)

asbegin

-- insert into students(id,username,userpass,userage) values(ids,username,userpass,userage);--增

-- delete from students where id=ids;--刪

-- update students set userage=100 where id=ids;--改

commit;

end;

都是入參,接收後對錶進行增刪改操作

呼叫begin

mydemo07(10,'a','b','17');

end;

create or replace procedure mydemo08(ids in int, age out int)

asbegin

select userage into age from students where id=ids; --查

commit;

end;

根據傳入的id,查詢出年齡輸出

declare

ids int;

age int;

begin

ids:=1;

mydemo08(ids=>ids,age=>age);

dbms_output.put_line('age='||age);

end;

create or replace procedure mydemo09

asbegin

for stu in (select * from students) loop

if (stu.id<5) then

dbms_output.put_line(stu.id);

end if;

end loop;

commit;

end;

呼叫begin

mydemo09();

end;

create or replace procedure test_while_loop

asn_count number := 0;

begin

while n_count < 10 loop

dbms_output.put_line(n_count);

n_count := n_count + 1;

end loop;

end;

在宣告的時候也可賦值

begin

test_while_loop();

end;

oracle 儲存過程基礎語法

儲存過程是儲存在資料庫中,儲存過程的優點 經過一次編譯,並以可執行檔案形式儲存,因此呼叫過程快速而且高效。1.oracle儲存過程無引數過程語法 create or replace procedure procename as 宣告變數 變數名 變數型別 begin 業務exception 儲存過程...

Oracle基礎(八) 儲存過程

儲存過程是在大型資料庫中,事先經過編譯並儲存在資料庫中的一段sql語句的集合。如果有update操作,要在儲存過程外commit。儲存過程和儲存函式的區別 儲存過程可以通過輸出引數返回多個值,儲存函式只能返回乙個值 create or replace procedure 儲存過程名 引數 引數的格式...

oracle根據儲存過程中內容查詢儲存過程名

在oracle中,物件的源 是可以從user source資料字典中 1.有時候知道物件的某一部分內容,但不知道物件名是什麼,可以通過 select from user source s where s.text like 退出 來查詢。2.自己寫完了儲存過程忘了這個過程的內容是什麼了,就可以使用o...