oracle作業5 PL SQL應用

2021-10-10 04:54:04 字數 3198 閱讀 9074

標題h2為題目

藍色字型和**塊為解答

1.數值型別

數值型別主要包括number、pls_integer和binary_integer三種基本型別

number(p,s)  :

用來儲存正負整數、分數和浮點型資料,有38位的精確度,p表示精度,用於指定數字的總位數;s用於指定小數點後的數字位數。

2.字元型別

字元型別主要包括varchar2、char、long、nchar和nvarchar2等。這些型別的變數用來儲存字串或字元資料。

3.日期型別

用來儲存日期和時間資訊,包括date、timestamp型別。 date型別的儲存空間是7個位元組,分別使用乙個位元組儲存世紀、年、月、天、小時、分鐘和秒。

4.布林型別

布林型別只有一種——即boolean,主要用於程式的流程控制和業務邏輯判斷,其變數值可以是true、false或null中的一種。

其變數的值為true、false或null。

需要注意,該資料型別是pl/sql資料型別,不能向資料庫中插入布林型別的值。

5.大物件資料型別 (lob)

儲存定位器,而該定位器指向大型物件的儲存位置

dbms_lob程式包用於操縱lob資料

特殊型別:

1.%type型別

使用%type關鍵字可以宣告乙個與指定列名稱相同的資料型別,它通常緊跟在指定列名的後面。

變數名 指定列名%type

2.record型別:

記錄類似於c語言中的結構體struct,一般每個記錄都包含多個資料成員/資料項/域。

定義記錄型別:

type 型別名  is record (

成員1  資料型別 [not null] [:=default_value] , …

成員2  資料型別 [not null] [:=default_value] )

3.%rowtype 型別,語法如下:

變數名  **名%rowtype;

用來儲存從資料表中檢索到的一行資料

不需要預先定義record記錄型別,自動根據表的欄位名,建立乙個相應的記錄型別。

set serveroutput on;

declare

v_weight   number (3) := 100;

begin

declare

v_weight   number (3) := 1;

begin

v_weight := v_weight + 2;

end;

v_weight := v_weight + 1;

dbms_output.put_line ('v_weight=' || to_char (v_weight));

end;

程式執行結果:v_weight=101

使用loop、while語句實現:

set serveroutput on;

declare

i       int := 2;

sum_i   int := 1;

begin

while i <= 20

loop

sum_i := sum_i * i;

i := i + 2;

end loop;

dbms_output.put_line ('1-20偶數的積為' || to_char (sum_i));

end;

使用for語句實現:

set serveroutput on;

declare

sum_i int := 1;

begin

for i in reverse 1 .. 20 loop

if mod (i, 2) = 0 then

sum_i := sum_i * i;

end if;

end loop;

dbms_output.put_line ('1-20偶數的積為' || to_char (sum_i));

end;

根據雇員的職位來加薪,按下列加薪結構處理:

職位          加薪         

-----------------------

clerk          500

salesman       1000

analyst        1500

otherwise      2000

編寫乙個程式塊,接受乙個雇員名&name,從emp表中實現上述加薪處理。比如,如果輸入的人是乙個clerk,給該人加薪500,如果是salesman 給該人加薪1000,依此類推。如果該人不存在,進行異常處理,輸出找不到該員工。

set serveroutput on;

declare

v_emp   emp%rowtype;

begin

select * into v_emp from emp where ename = '&name';

case v_emp.job

when 'clerk' then

update emp set sal = sal + 500 where ename = v_emp.ename;

when 'salesman' then

update emp set sal = sal + 1000 where ename = v_emp.ename;

when 'analyst' then

update emp set sal = sal + 1500 where ename = v_emp.ename;

when 'otherwise' then

update emp set sal = sal + 2000 where ename = v_emp.ename;

else

dbms_output.put_line ('該職位不加薪');

end case;

commit;//更新語句執行後,需要提交,不然再次執行修改會出錯,沒有反應。

exception

when no_data_found then

dbms_output.put_line ('找不到該員工');

end;

ORACLE連線型別 各種連線查詢PL SQL測試

測試oracle 所有連線型別 pl sql 中執行的 本人初學,可能有理解不到位的地方,請指正,謝謝!建表 create table xxaa id number 10 name varchar2 20 create table xxbb idd number 10 namee varchar2 ...

Win7 64位安裝ORACLE及PL SQL小結

這兩天裝oracle裝的快抓狂了,網上看了很多帖子說的都不全,我總結下,歡迎斧正!pl sql目前不支援64位,所以需要用32位的client,但是db可以用64的,步驟如下 1.安裝 10204 vista w2k8 x64 production db 修改檔案 database stage pr...

Oracle11g安裝後如何使用PL SQL

使用pl sql的方法 1,檢視電腦服務,確保以下倆服務開啟。xlistener 已啟動 oracleserviceorcl 已啟動 2,登入 使用者名稱 scott 密碼 tiger 原因 預設oracle11g的scott不能登陸。3,使用者解鎖 1 以管理員的身份登入資料庫 system sy...