Oracle存儲(chǔ)過(guò)程基本語(yǔ)法: CREATE OR REPLACE PROCEDURE 存儲(chǔ)過(guò)程名 IS BEGIN NULL; END;解釋: 行1: CREATE OR REPLACE PROCEDURE 是一個(gè)SQL語(yǔ)句通知Oracle數(shù)據(jù)庫(kù)去創(chuàng)建一個(gè)叫做skeleton存儲(chǔ)過(guò)程, 如果存在就覆蓋它; 行2: IS關(guān)鍵詞表明后面將跟...

創(chuàng)新互聯(lián)長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為惠東企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站制作,惠東網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
and優(yōu)先級(jí)大于or。
加括號(hào)則優(yōu)先執(zhí)行or,后執(zhí)行and;不加括號(hào),會(huì)先執(zhí)行and,再執(zhí)行or,所以查詢結(jié)果不同。舉例:
數(shù)據(jù)庫(kù)存在數(shù)據(jù):
Thomas Carter
William?Carter
Thomas?King
執(zhí)行:SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'
結(jié)果為:
Thomas?Carter
William?Carter
執(zhí)行:SELECT * FROM Persons WHERE FirstName='Thomas' OR FirstName='William'
AND LastName='Carter'
結(jié)果為:
Thomas?Carter
William?Carter
Thomas?King
擴(kuò)展資料:
ORACLE數(shù)據(jù)庫(kù)特點(diǎn):
1、完整的數(shù)據(jù)管理功能:
(1)數(shù)據(jù)的大量性
(2)數(shù)據(jù)的保存的持久性
(3)數(shù)據(jù)的共享性
(4)數(shù)據(jù)的可靠性
2、完備關(guān)系的產(chǎn)品:
(1)信息準(zhǔn)則---關(guān)系型DBMS的所有信息都應(yīng)在邏輯上用一種方法,即表中的值顯式地表示;
(2)保證訪問(wèn)的準(zhǔn)則
(3)視圖更新準(zhǔn)則---只要形成視圖的表中的數(shù)據(jù)變化了,相應(yīng)的視圖中的數(shù)據(jù)同時(shí)變化
(4)數(shù)據(jù)物理性和邏輯性獨(dú)立準(zhǔn)則
3、分布式處理功能:ORACLE數(shù)據(jù)庫(kù)自第5版起就提供了分布式處理能力,到第7版就有比較完善的分布式數(shù)據(jù)庫(kù)功能了,一個(gè)ORACLE分布式數(shù)據(jù)庫(kù)由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關(guān)系型產(chǎn)品構(gòu)成。
4、用ORACLE能輕松的實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)的操作。
參考資料:百度百科-Oracle數(shù)據(jù)庫(kù)
表示一個(gè)字符串,至少在三位以上(%代表多為字符,如題則表示在字符“A”前至少有一位字符),--表示在此處只能有兩位字符。例如:“jkAer”,"sdf13213Are"。總之,倒數(shù)第三位必須是“A”,倒數(shù)第一位和倒數(shù)第二位必須為一個(gè)字符,“A”前至少為一個(gè)字符。
create 創(chuàng)建存儲(chǔ)過(guò)程,replace 替換或者說(shuō)是覆蓋存儲(chǔ)過(guò)程,procedure 即表示你是創(chuàng)建或者是替換存儲(chǔ)過(guò)程 create or replace procedure 存儲(chǔ)過(guò)程名
存儲(chǔ)過(guò)程(procedure):是一個(gè)命名了的語(yǔ)句塊,可以有0個(gè)或多個(gè)參數(shù)
語(yǔ)法:
create or replace procedure HelloWorld
as
begin
dbms_output.put_line('HelloWorld');
end;
調(diào)用存儲(chǔ)過(guò)程
* 命令調(diào)用 exec helloworld
* 語(yǔ)句塊調(diào)用
begin
helloworld;
end;
/
DELETE:
create or replace procedure del_emp01
is
begin
delete from emp01 where empno=7369;
end;
exec del_emp01;
create or replace procedure del_emp01(v_empno in emp01.empno%type)
is
begin
delete from emp01 wherer empno=v_empno;
end;
exec del_emp01(7521);
INSERT
create or replace procedure ins_emp01
(v_empno emp01.empno%type,v_ename emp01.ename%type)
as
begin
insert into emp01(empno,ename) values(v_empno,v_ename);
end;
exec ins_emp01(1000,'李四');
UPDATE
create or replace procedure upd_emp01
(v_empno emp01.empno%type,v_ename emp01.ename%type)
as
begin
update emp01 set ename=v_ename where empno=v_empno;
end;
exec upd_emp01(1000,'張三');
SELECT
create or replace procedure sel_emp01
(v_empno emp01.empno%type,v_emp01_data out emp01%rowtype)
as
begin
select * into v_emp01_data from emp where empno=v_empno;
end;
帶有輸出參數(shù)的存儲(chǔ)過(guò)程不能使用命令直接調(diào)用
只能由語(yǔ)句塊或程序調(diào)用(JAVA) ****************************************************************
declare
v_emp_data emp01%rowtype;
begin
sel_emp01(7499,v_emp_data);
dbms_output.put_line(v_emp_data.ename||' '||v_emp_data.sal);
end;
調(diào)用:
declare
v_emp_data emp01%rowtype;
begin
sel_emp01(7499,v_emp_data);
dbms_output.put_line(v_emp_data.ename||' '||v_emp_data.sal);
end;
使用scott用戶登錄
統(tǒng)計(jì)某個(gè)部門的員工的工資總和,員工的人數(shù),平均工資,創(chuàng)建存儲(chǔ)過(guò)程
create or replace procedure deptcount
(v_deptno emp.deptno%type,v_sal_sum out number,v_recordes out number,v_avg_sal out number,errorMsg out varchar2)
is
begin
select sum(sal) into v_sal_sum from emp group by deptno having deptno=v_deptno;
select count(*) into v_recordes from emp group by deptno having deptno=v_deptno;
select avg(sal) into v_avg_sal from emp group by deptno having deptno=v_deptno;
exception
when no_data_found then
errorMsg:='沒(méi)有該部門';
end;
調(diào)用:
declare
v_sal_sum number;
v_recordes number;
v_avg_sal number(8,2);
v_errormsg varchar2(20);
begin
deptcount(90,v_sal_sum,v_recordes,v_avg_sal,v_errormsg);
dbms_output.put_line(v_sal_sum||' '||v_recordes||' '||v_avg_sal);
dbms_output.put_line(v_errormsg);
end;
//輸出參數(shù)
create or replace procedure my_pro(v_num in number,v_result out number)
is
v_temp number;
begin
v_temp:=0;
for i in 1..v_num
loop
v_temp:=v_temp+i;
end loop;
v_result:=v_temp;
end;
declare
v_recieve number;
begin
my_pro(100,v_recieve);
dbms_output.put_line(v_recieve);
end;
//既是輸入?yún)?shù)又是輸出參數(shù)
create or replace procedure my_pro1(v_i in out number)
is
v_j number;
begin
v_j:=30;
v_i:=v_i*v_j;
end;
declare
v_t number;
begin
v_t:=20;
my_pro1(v_t);
dbms_output.put_line(v_t);
end;
oracle中的(+)是一種特殊的用法,(+)表示外連接,并且總是放在非主表的一方。
例如左外連接:
select A.a,B.a from A LEFT JOIN B ON A.b=B.b;
等價(jià)于
select A.a,B.a from A,B where A.b = B.b(+);
再舉個(gè)例子,這次是右外連接:
select A.a,B.a from A RIGHT JOIN B ON A.b=B.b;
等價(jià)于
select A.a,B.a from A,B where A.b (+) = B.b;
明白了記得給分!
分享標(biāo)題:oracle中且怎么表示,oracle中+的用法
文章來(lái)源:http://chinadenli.net/article44/dseijee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、微信小程序、ChatGPT、網(wǎng)站內(nèi)鏈、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)