查詢
select語句用於從資料庫中查詢資料,當在pl/sql中使用select語句時,要與into子句一起使用,查詢的返回值被賦予into子句中的變數,變數的宣告是在delcare中。select into語法如下:
select [distict|all]
into (variable[,variable,...] |record)
from [alias]
where............
pl/sql中select語句只返回一行資料。如果超過一行資料,那麼就要使用顯式游標(對游標的討論我們將在後面進行),into子句中要有與select子句中相同列數量的變數。into子句中也可以是記錄變數。
%type屬性
在pl/sql中可以將變數和常量宣告為內建或使用者定義的資料型別,以引用乙個列名,同時繼承他的資料型別和大小。這種動態賦值方法是非常有用的,比如變數引用的列的資料型別和大小改變了,如果使用了%type,那麼使用者就不必修改**,否則就必須修改**。
例:v_empno scott.emp.empno%type;
v_salary emp.salary%type;
不但列名可以使用%type,而且變數、游標、記錄,或宣告的常量都可以使用%type。這對於定義相同資料型別的變數非常有用。
delcare
v_a number(5):=10;
v_b v_a%type:=15;
v_c v_a%type;
begin
dbms_output.put_line
('v_a='||v_a||'v_b='||v_b||'v_c='||v_c);
endsql>/
v_a=10 v_b=15 v_c=
pl/sql procedure successfully completed.
sql>
其他dml語句
其它運算元據的dml語句是:insert、update、delete和lock table,這些語句在pl/sql中的語法與在sql中的語法相同。我們在前面已經討論過dml語句的使用這裡就不再重複了。在dml語句中可以使用任何在declare部分宣告的變數,如果是巢狀塊,那麼要注意變數的作用範圍。
例:create or replace procedure fire_employee (pempno in number)
asv_ename emp.ename%type;
begin
select ename into v_ename
from emp
where empno=p_empno;
insert into former_emp(empno,ename)
values (p_empno,v_ename);
delete from emp
where empno=p_empno;
update former_emp
set date_deleted=sysdate
where empno=p_empno;
exception
when no_data_found then
dbms_output.put_line('employee number not found!');
end
Oracle 游標使用大全3
記錄變數定義乙個記錄變數使用type命令和 rowtype,關於 rowstype的更多資訊請參閱相關資料。記錄變數用於從游標中提取資料行,當游標選擇很多列的時候,那麼使用記錄比為每列宣告乙個變數要方便得多。當在表上使用 rowtype並將從游標中取出的值放入記錄中時,如果要選擇表中所有列,那麼在s...
Oracle 游標使用大全2
游標for迴圈 在大多數時候我們在設計程式的時候都遵循下面的步驟 1 開啟游標 2 開始迴圈 3 從游標中取值 4 檢查那一行被返回 5 處理 6 關閉迴圈 7 關閉游標 可以簡單的把這一類 稱為游標用於迴圈。但還有一種迴圈與這種型別不相同,這就是for迴圈,用於for迴圈的游標按照正常的宣告方式宣...
Oracle 游標使用大全2
游標for迴圈 在大多數時候我們在設計程式的時候都遵循下面的步驟 1 開啟游標 2 開始迴圈 3 從游標中取值 4 檢查那一行被返回 5 處理 6 關閉迴圈 7 關閉游標 可以簡單的把這一類 稱為游標用於迴圈。但還有一種迴圈與這種型別不相同,這就是for迴圈,用於for迴圈的游標按照正常的宣告方式宣...