儲存過程及java呼叫

2021-04-14 08:06:34 字數 1696 閱讀 7882

過程和觸發器在資料庫中儲存過程 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 

語句之間的單個 insert。

過程的引數可以標記為 in、out 或 inout 之一。預設情況下,引數是 inout 引數。new_dept 過程的所有引數都是 in

引數,因為該過程並不更改它們。

呼叫過程

call 語句呼叫過程。過程可由應用程式呼叫,或者由其它過程和觸發器呼叫。

有關詳細資訊,請參見 call 語句。

以下語句呼叫 new_dept 過程來插入 eastern sales 部門:

call new_dept( 210, 'eastern sales', 902 );

在此呼叫後,您最好檢查 department 表,以檢視是否已新增該新部門。

已被授予該過程的 execute 許可權的所有使用者都可以呼叫 new_dept 過程,即使他們對 department 表不具有任何許可權。

有關 execute 許可權的詳細資訊,請參見 execute 語句

[esql]。

呼叫返回結果集的過程的另一種方法是在查詢中呼叫它。您可以對過程的結果集執行查詢,並應用 where 子句和其它 select 功能以限制結果集。

select t.id, t.quantity_ordered as q

from sp_customer_products( 149 ) t

有關詳細資訊,請參見 from 子句。

示例以下語句從資料庫中刪除過程 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...