一:變數作用域
declarecurrent_block varchar2(10) := 'outer';
outer_block varchar2(10) := 'outer';
begin
dbms_output.put_line('[current_block]['||current_block||']');
declare
current_block varchar2(10) := 'inner';
begin
dbms_output.put_line('[current_block]['||current_block||']');
dbms_output.put_line('[outer_block]['||outer_block||']');
end;
dbms_output.put_line('[current_block]['||current_block||']');
end;
以上為引用一本書的**(oracle database 11g pl/sql程式設計)
輸出為
[current_block][outer][current_block][inner]
[outer_block][outer]
[current_block][outer]
這是兩個巢狀的程式塊
我們在子程式塊中重定義了父程式塊的變數
這個變數在子程式塊執行完之後又恢復了父程式塊中定義的值
二:%type 取乙個已知變數的資料型別
declare mytitle labor.xland.title%type;begin
select title into mytitle from labor.xland where state = 0;
dbms_output.put_line(mytitle);
end;
上面例子中取了表title列的資料型別(varchar2)
然後檢索了一行一列資料,把這個資料賦值給我們定義的變數mytitle
當然你也可以定義多個變數
如:select title,id into mytitle,myid from labor.xland where state = 0;
三:%rowtype 取乙個已知行的資料型別,這應該是乙個物件型別
declaremyrow labor.xland%rowtype;
begin
select * into myrow from labor.xland where state = 0;
dbms_output.put_line(myrow.title);
dbms_output.put_line(to_char(myrow.state));
end;
上例中我們取了某個表的rowtype,並定義了變數myrow
接著把這個表的一行資料賦值給了這個變數
輸出的時候只要以點來獲取這一行的某個列即可
四:record 這應該也是乙個物件
declaretype myrecordtype is record
( mytitle labor.xland.title%type,
mystate labor.xland.state%type
);myrecord myrecordtype;
begin
select title, state into myrecord from labor.xland;
dbms_output.put_line(myrecord.mytitle);
dbms_output.put_line(to_char(myrecord.mystate));
end;
如上**
我們先定義了一種資料型別(type)
這種型別包含兩個屬性,分別是mytitle和mystate
然後我們定義了乙個變數myrecord
這個變數的型別就是我們剛才定義的資料型別
接著我們把兩個資料賦值給類這個變數的兩個屬性
這裡的賦值順序是按屬性定義的先後順序給屬性賦值的
然後輸出
至此,資料型別仍未講完
還有table(表),array(陣列),exception(異常),cursor(游標)等型別等沒講
異常和游標將在後面的文章提到
作用域及變數
作用域 重點 什麼是作用域,就是乙個變數可以生效的範圍 變數不是在所有地方都可以使用的,而這個變數的使用範圍就是作用域 全域性作用域 全域性作用域是最大的作用域 在全域性作用域中定義的變數可以在任何地方使用 頁面開啟的時候,瀏覽器會自動給我們生成乙個全域性作用域 window 這個作用域會一直存在,...
python學習筆記 變數作用域
1區域性作用域 輸入def v1 a 5 區域性變數,只在函式內部使用 print a v1 print a 報錯,無法再函式外部訪問區域性變數輸出 5 traceback most recent call last file line 6,in print a nameerror name a i...
Js 變數及作用域
一 變數包含兩種不同資料型別的值 基本型別值 引用型別值 1 基本型別值 1.簡單的資料段,被儲存在棧記憶體中 2.按值訪問 3.不能給基本型別的值新增屬性 4.從乙個變數向另乙個變數複製值時,會建立這個值的副本,兩個變數不相互影響 2.引用型別值 1.值是儲存在記憶體中的物件,儲存在堆記憶體中 2...