過程和觸發器在資料庫中儲存過程 sql 語句,以供所有應用程式使用。它們包括允許 sql 語句的重複執行(loop 語句)和條件執行(if 語句和 case 語句)的控制語句。
過程是通過 call 語句呼叫的,並且使用引數來接受值和將值返回到呼叫環境中。通過將過程名包括在 from 子句中,select 語句也可以對過程結果集進行操作。
過程可以將結果集返回給呼叫者、呼叫其它過程或觸發觸發器。例如,使用者定義的函式是一種將單個值返回到呼叫環境的儲存過程。使用者定義的函式不修改傳遞給它們的引數,而是拓展可用於查詢和其它 sql 語句的函式的範圍。
觸發器與特定資料庫表相關聯。只要有人插入、更新或刪除關聯表的行,觸發器就會自動觸發。觸發器可以呼叫過程和觸發其它觸發器,但它們不具有任何引數並且無法由 call 語句呼叫 示例
以下簡單示例建立過程 new_dept,該過程執行 insert 到示例資料庫的 department 表的操作,從而建立新的部門。
create procedure new_dept (in id int,
in name char(35),
in head_id int )
begin
insert
into dba.department ( dept_id,
dept_name, dept_head_id )
values ( id, name, head_id );
end
過程的主體是復合語句。復合語句以 begin 語句起始,以 end 語句結束。在 new_dept 的例子中,復合語句是包括在 begin 和 end在此呼叫後,您最好檢查 department 表,以檢視是否已新增該新部門。語句之間的單個 insert。
過程的引數可以標記為 in、out 或 inout 之一。預設情況下,引數是 inout 引數。new_dept 過程的所有引數都是 in
引數,因為該過程並不更改它們。
呼叫過程
call 語句呼叫過程。過程可由應用程式呼叫,或者由其它過程和觸發器呼叫。
有關詳細資訊,請參見 call 語句。
以下語句呼叫 new_dept 過程來插入 eastern sales 部門:
call new_dept( 210, 'eastern sales', 902 );
已被授予該過程的 execute 許可權的所有使用者都可以呼叫 new_dept 過程,即使他們對 department 表不具有任何許可權。
有關 execute 許可權的詳細資訊,請參見 execute 語句
[esql]。
呼叫返回結果集的過程的另一種方法是在查詢中呼叫它。您可以對過程的結果集執行查詢,並應用 where 子句和其它 select 功能以限制結果集。
select t.id, t.quantity_ordered as q有關詳細資訊,請參見 from 子句。from sp_customer_products( 149 ) t
示例以下語句從資料庫中刪除過程 new_dept:
drop procedure new_dept
try");proc.setstring(1, poetname);
proc.setint(2, age);
cs.execute();
}catch (sqlexception e)
JAVA 呼叫Oracle 及儲存過程
try r.close s.close ct.close catch exception e try proc.execute ct.close catch exception e try proc.setstring 1,gq proc.setint 2,24 proc.execute ct.cl...
java呼叫儲存過程
什麼是儲存過程?儲存過程是指儲存在資料庫並在資料庫端執行的程式。儲存過程是為嵌入式 sql所設計 如何呼叫儲存過程?try proc.setstring 1,poetname proc.setint 2,age cs.execute catch sqlexception e 傳給preparecal...
java呼叫儲存過程
什麼是儲存過程?儲存過程是指儲存在資料庫並在資料庫端執行的程式。儲存過程是為嵌入式sql所設計 如何呼叫儲存過程?try proc.setstring 1,poetname proc.setint 2,age cs.execute catch sqlexception e 傳給preparecall...