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...