標題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...