邁入orcl的學習之 儲存過程

2022-07-19 04:09:11 字數 3195 閱讀 3958

儲存過程(stored procedure)是在大型資料庫系統中,一組為了完成特定功能的

sql

語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要物件

1.登入

system

使用者給普通使用者許可權:(此時的身份是:

system

)grant create any table to annan;--授權表的許可權給

annan

角色grant create any procedure to annan;

grant execute any procedure to annan;--授權儲存過程的許可權給

annan

角色2. 建立一

張表(此時的身份是:annan)

--建立一張表

create table usertble(

usid number(10) primary key not null,

usname nvarchar2(20) not null,

uspwd nvarchar2(20) not null

)--新增幾條資料

insert into usertble values(2,'3333','1')

--查詢

select * from usertble

(此時的身份是:annan)

1.

--建立儲存過程:通過儲存過程來查詢usertble的總記錄數

create or replace procedure proce_usertable

asnums number(1);

begin

select count(*) into nums from usertble;

dbms_output.put_line('總人數:'||nums);

end;

2.去命令下執行

3.呼叫儲存過程

--呼叫儲存過程 語法:begin 『儲存過程名稱』(變數1,變數2...) end;

begin

proce_usertable;

end;

查詢結果:

然後乙個儲存過程就這樣好了。。。。。。。

--建立儲存過程:通過儲存過程來新增usertble的資訊

create or replace procedure insert_usertable

asbegin

insert into usertble

values

(3,'999999','666');

end;

--呼叫儲存過程 :insert_usertable

begin

insert_usertable;

end;

-------------帶參的儲存過程---------

---儲存過程的引數

---in 定義乙個輸入引數變數,用於傳遞引數給儲存過程 

--out 定義乙個輸出引數變數,用於從儲存過程獲取資料 

---in out 定義乙個輸入、輸出引數變數,兼有以上兩者的功能 

1.in

--1.建立有引數的儲存過程  in :將值傳到儲存過程中

create or replace procedure test_in

(usid in number,usname in nvarchar2,uspwd nvarchar2 default '0')

asbegin

insert into usertble

values

(usid,usname,uspwd);

end;

--呼叫儲存過程:test_in

begin

test_in(4,'大灰狼','18');

end;

2.out

--2.建立有引數的儲存過程  out :將儲存過程中的值傳出來

create or replace procedure test_out

(usnames out nvarchar2,uspwds out nvarchar2)

asbegin

select usname,uspwd into usnames,uspwds from usertble where usid=4;

dbms_output.put_line('使用者名稱:'||usnames);

dbms_output.put_line('密碼:'||uspwds);

end;

--呼叫儲存過程:test_out

declare

usnames nvarchar2(20);--宣告引數usnames

uspwds nvarchar2(20);--宣告引數uspwds

begin

test_out(usnames,uspwds);

dbms_output.put_line('☆使用者名稱☆:'||usnames);

dbms_output.put_line('☆密碼☆:'||uspwds);

end;

3.in out

--3.建立有引數的儲存過程  in out :將值傳到儲存過程中,再將儲存過程中的值傳出來

create or replace procedure test_in_out

(phone in out nvarchar2)

asbegin

phone:='10086-'||phone;

end;

--呼叫儲存過程:test_in_out

declare

phone nvarchar2(20);--宣告引數phone

begin

phone:='11111';

test_in_out(phone);

dbms_output.put_line('☆這個**是☆:'||phone);

end;

Oracle學習之儲存過程

儲存過程可以說是乙個記錄集吧,它是由一些t sql語句組成的 塊,這些t sql語句 像乙個方法一樣實現一些功能 對單錶或多表的增刪改查 然後再給這個 塊取乙個名字,在用到這個功能的時候呼叫他就行了 建立儲存過程 create proc edure procedure name number var...

LINQ 學習筆記之儲存過程!

首先在資料庫中隨便建立兩個儲存過程,乙個待引數,乙個不待引數,create proc sp selectstudent asbegin select from student end第二個 create proc dbo sp addclasses classename nvarchar 20 as...

oracle學習筆記之儲存過程

user scott sql create table mytest name varchar2 30 password varchar2 30 table created sql create or replace procedure pro sp1 is 建立乙個簡單的儲存過程 2 begin ...