create 創(chuàng)建存儲過程,replace 替換或者說是覆蓋存儲過程,procedure 即表示你是創(chuàng)建或者是替換存儲過程 create or replace procedure 存儲過程名
十年的江北網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整江北建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“江北網(wǎng)站設(shè)計”,“江北網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
表示一個字符串,至少在三位以上(%代表多為字符,如題則表示在字符“A”前至少有一位字符),--表示在此處只能有兩位字符。例如:“jkAer”,"sdf13213Are"??傊?,倒數(shù)第三位必須是“A”,倒數(shù)第一位和倒數(shù)第二位必須為一個字符,“A”前至少為一個字符。
Oracle存儲過程基本語法: CREATE OR REPLACE PROCEDURE 存儲過程名 IS BEGIN NULL; END;解釋: 行1: CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle數(shù)據(jù)庫去創(chuàng)建一個叫做skeleton存儲過程, 如果存在就覆蓋它; 行2: IS關(guān)鍵詞表明后面將跟...
存儲過程(procedure):是一個命名了的語句塊,可以有0個或多個參數(shù)
語法:
create or replace procedure HelloWorld
as
begin
dbms_output.put_line('HelloWorld');
end;
調(diào)用存儲過程
* 命令調(diào)用 exec helloworld
* 語句塊調(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ù)的存儲過程不能使用命令直接調(diào)用
只能由語句塊或程序調(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)計某個部門的員工的工資總和,員工的人數(shù),平均工資,創(chuàng)建存儲過程
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:='沒有該部門';
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;
這樣的語法肯定是可以的。
關(guān)鍵是你的or,是不是你的邏輯分析出了問題?
你的這個判斷,只有一種情況,會不執(zhí)行then后邊的情況,就是a = 1 同時 b = 2同時 c = 3的時候,否則,都會執(zhí)行then后邊的語句。
是不是你的邏輯出問題了?
出了a = 1 and b = 2 and c = 3,那么其他時候,都符合你這個判斷。
你看看你所說的條件不成立的數(shù)據(jù)是什么,如果有困惑,可以把你指的這條數(shù)據(jù)貼出來。
是a = 1 and b = 2 and c = 3么?
甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型數(shù)據(jù)庫軟件公司??偛课挥诿绹又菁t木城的紅木岸(Redwood Shores),現(xiàn)時首席執(zhí)行官為公司創(chuàng)辦人勞倫斯·埃里森(Lawrence J. Ellison)。
2016年11月6日,甲骨文公司(Oracle)股東同意以 93 億美元的資金收購Netsuite公司,每股價格約為 109 美元。
and優(yōu)先級大于or。
加括號則優(yōu)先執(zhí)行or,后執(zhí)行and;不加括號,會先執(zhí)行and,再執(zhí)行or,所以查詢結(jié)果不同。舉例:
數(shù)據(jù)庫存在數(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ù)庫特點:
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)保證訪問的準(zhǔn)則
(3)視圖更新準(zhǔn)則---只要形成視圖的表中的數(shù)據(jù)變化了,相應(yīng)的視圖中的數(shù)據(jù)同時變化
(4)數(shù)據(jù)物理性和邏輯性獨(dú)立準(zhǔn)則
3、分布式處理功能:ORACLE數(shù)據(jù)庫自第5版起就提供了分布式處理能力,到第7版就有比較完善的分布式數(shù)據(jù)庫功能了,一個ORACLE分布式數(shù)據(jù)庫由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關(guān)系型產(chǎn)品構(gòu)成。
4、用ORACLE能輕松的實現(xiàn)數(shù)據(jù)倉庫的操作。
參考資料:百度百科-Oracle數(shù)據(jù)庫