PL SQL程式設計基礎知識(一)

2021-08-07 05:26:43 字數 4363 閱讀 3774

--pl/sql變數的宣告和賦值

declare

v_ename varchar2(30);--定義變數

begin

v_ename:='&請輸入名字';--接受鍵盤輸入

dbms_output.put_line(v_ename);

end;

--put_line :列印換行 ; put :列印不換行

--接受數字輸入,第一行輸出若使用不換行列印造成輸出失敗

declare

v_num number;

begin

v_num:=22;--直接賦值

dbms_output.put_line(v_num);

end;

--變數中接受表的型別

declare

v_ename scott.emp.ename%type;--宣告為scott使用者emp表ename欄位型別

begin

select ename into v_ename from emp where empno=7369;--使用select into給變數賦值

dbms_output.put_line(v_ename);

end;

--行結果集型別

declare

v_emprow scott.emp%rowtype;--v_emprow的型別為scott使用者emp表的行型別

begin

select * into v_emprow from emp where empno=7369;

dbms_output.put_line('員工姓名'||v_emprow.ename||' 員工薪水'||v_emprow.sal);--oracle字元連線使用||符號

end;

--if選擇結構

declare

v_score number;

begin

v_score:='&請輸入oracle資料成績';

if v_score>90 then dbms_output.put_line('獎勵大大的');

elsif v_score>80 then dbms_output.put_line('中等');--注意:oracle中的 elsif 和其他程式語言不一樣:其中缺少乙個e

else dbms_output.put_line('繼續努力');

end if;--if語句塊需要手動結束

end;

--case語句結構

declare

v_ename scott.emp.ename%type;

v_deptno scott.emp.deptno%type;

begin

v_ename:='&請輸入員工姓名';

select deptno into v_deptno from emp where ename=v_ename;

case v_deptno

when 10 then dbms_output.put_line('10');

when 20 then dbms_output.put_line('20');

when 40 then dbms_output.put_line('30');

else dbms_output.put_line('無');

end case;

end;

select * from dept;

select * from emp;

create table grades(

id number,

name varchar2(30),

course varchar2(30),

grade number(5,2)

);insert into grades(id,name,course,grade) values(1,'鄒忌第','語文',90);

insert into grades(id,name,course,grade) values(2,'鄒忌第','數學',90);

insert into grades(id,name,course,grade) values(3,'鄒忌第','外語',90);

insert into grades(id,name,course,grade) values(4,'鄒忌第','物理',90);

insert into grades(id,name,course,grade) values(5,'男生與我','語文',90);

insert into grades(id,name,course,grade) values(6,'男生與我','數學',90);

insert into grades(id,name,course,grade) values(7,'男生與我','外語',90);

insert into grades(id,name,course,grade) values(8,'海軍','語文',90);

insert into grades(id,name,course,grade) values(9,'海軍','數學',90);

insert into grades(id,name,course,grade) values(10,'海軍','外語',90);

select * from grades;

--行轉列

select name,

sum(case when course='語文' then grade else 0 end) as 語文,

sum(case when course='數學' then grade else 0 end) as 數學,

sum(case when course='外語' then grade else 0 end) as 外語,

sum(case when course='物理' then grade else 0 end) as 物理

from grades group by name;

--loop迴圈 至少執行一次

declare

v_num1 number;

v_num2 number;

begin

v_num1:='&請輸入數值1';

v_num2:='&請輸入數值2';

loop

dbms_output.put_line(v_num1);

v_num1:=v_num1+1;

exit when v_num1>v_num2;--退出條件

end loop;

exception

when others then

dbms_output.put_line('unknown exception occurred');

dbms_output.put_line(sqlcode);--輸出異常對應的編號

dbms_output.put_line(sqlerrm);--輸出異常對應的資訊

end;

--while迴圈 使用最多 最為靈活

declare

v_num1 number;

v_num2 number;

begin

v_num1:='&請輸入數值1';

v_num2:='&請輸入數值2';

while v_num1dbms_output.put_line(v_num1);

v_num1:=v_num1+1;

end loop;

exception

when others then

dbms_output.put_line('unknown exception occurred');

dbms_output.put_line(sqlcode);--輸出異常對應的編號

dbms_output.put_line(sqlerrm);--輸出異常對應的資訊

end;

--for迴圈

declare

v_num1 number;

v_num2 number;

begin

v_num1:='&請輸入數值1';

v_num2:='&請輸入數值2';

for v_result in v_num1.. v_num2 loop --for 變數名 in 迴圈的範圍 loop

dbms_output.put_line(v_result);--對變數進行操作

end loop;

exception

when others then

dbms_output.put_line('unknown exception occurred');

dbms_output.put_line(sqlcode);--輸出異常對應的編號

dbms_output.put_line(sqlerrm);--輸出異常對應的資訊

end;

PL SQL基礎知識

sql語句都是逐一的傳送給資料庫,而pl sql可以一次性將多條sql語句一起傳送給資料庫.語法 declare 宣告部分,例如 定義變數 常量 游標。begin 程式編寫 sql語句 exectpion 處理異常 end 定義變數 三種方法 1 直接定義 v result varchar2 30 ...

plsql及Oracle基礎知識(一)

主要涉及知識 建立及銷毀表空間 建立及銷毀使用者 給使用者賦權 匯入匯出庫 建立表 給表新增主鍵及外來鍵約束 給表及字段新增注釋 建立函式 建立過程 建立序列 建立觸發器 建立程式包等,現將知識整理如下 1.建立表空間 首先登陸管理員賬號,或者有dba許可權的使用者。建立表空間 create tab...

網路程式設計基礎知識 一

1 iso osi參考模型 iso osi international standard orgnization open system interconnection 模型,簡稱osi模型,該模型定義了網路互聯的七層框架,即iso開發系統互聯模型。當資料通過osi模型的不同層是,傳遞的資料格式有不...