Oracle帶輸入輸出引數的儲存過程
Oracle帶輸入輸出引數的儲存過程
(一)使用輸入引數
需求:在emp_copy中新增一條記錄,empno為已有empno的最大值+1,ename不能為空且長度必須大於0,deptno為60。
建立儲存過程:
create or replace procedure insert_emp(emp_name in varchar2, dept_no in number) as
begin
declare max_empno number;
begin
if(emp_name is null or length(emp_name) = 0) then
return;
end if;
if(dept_no != 60) then
return;
end if;
select max(empno) into max_empno from emp_copy;
insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
end;
end insert_emp;
/
Procedure created.
呼叫儲存過程並驗證:
(1)
SQL>execute insert_emp('Li Si', 60);
PL/SQL procedure successfully completed.
SQL>
col empno format 99999;
col ename format a15;
col deptno format 99999;
select empno, ename, deptno from emp_copy where deptno = 60;
EMPNO ENAME DEPTNO
------ --------------- ------
7981 Li Si 60
(2)
SQL> execute insert_emp('', 6);
PL/SQL procedure successfully completed.
SQL> select empno, ename, deptno from emp_copy where deptno = 6;
SQL>
(二)使用輸出引數
需求:在上個需求的基礎上,要分別統計表emp_copy插入資料前後的記錄數。
建立儲存過程:
create or replace procedure insert_emp(emp_name in varchar2, dept_no in number, original_count out number, current_count out number) as
begin
declare max_empno number;
begin
if(emp_name is null or length(emp_name) = 0) then
return;
end if;
if(dept_no != 60) then
return;
end if;
select count(1) into original_count from emp_copy;
select max(empno) into max_empno from emp_copy;
insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
select count(1) into current_count from emp_copy;
end;
end insert_emp;
/
Procedure created.
呼叫儲存過程:
declare count1 number;
count2 number;
begin
insert_emp('Wang Wu', 60, count1, count2);
dbms_output.put_line('Original count of table emp_copy is ' || count1);
dbms_output.put_line('Current count of table emp_copy is ' || count2);
end;
/
Original count of table emp_copy is 15
Current count of table emp_copy is 16
PL/SQL procedure successfully completed.
(三)使用輸入輸出引數
in out引數綜合了上述兩種引數型別,既向過程體傳值,也被賦值而傳到過程體外。in out引數既可以用作輸入也可以用作輸出。
需求:實現兩數交換。
建立儲存過程:
create or replace procedure swap(value1 in out number, value2 in out number) as
begin
value1 := value1 + value2;
value2 := value1 - value2;
value1 := value1 - value2;
end swap;
/
Procedure created.
呼叫儲存過程:
declare a number := 22;
b number := 33;
begin
dbms_output.put_line('Before swap: a = ' || a || ', b = ' || b);
swap(a, b);
dbms_output.put_line('After swap: a = ' || a || ', b = ' || b);
end;
/
Before swap: a = 22, b = 33
After swap: a = 33, b = 22
PL/SQL procedure successfully completed.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29485627/viewspace-1248721/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 帶輸出引數的儲存過程儲存過程
- Java呼叫儲存過程(帶輸出引數)Java儲存過程
- 使用帶有輸出引數的儲存過程儲存過程
- C#中呼叫SQL儲存過程(帶輸入輸出引數的例子)C#SQL儲存過程
- dos下呼叫帶輸出引數的儲存過程儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- 在sqlplus中呼叫in out輸入輸出引數的儲存過程SQL儲存過程
- oracle procedure 儲存過程輸入及輸出in out示例Oracle儲存過程
- SQL Server-儲存過程(Procedure),帶入引數和出引數SQLServer儲存過程
- 【ASP.NET開發】ADO.NET呼叫帶輸出引數的儲存過程ASP.NET儲存過程
- 儲存過程輸入引數型別定義引起的問題儲存過程型別
- oracle儲存過程procedure_輸入引數varchar2與char報錯Oracle儲存過程
- .NET用使用儲存過程獲取輸出引數的程式碼示例!儲存過程
- tcbs_批量儲存過程_輸出引數out與異常的關係儲存過程
- oracle procedure儲存過程輸入引數用於sql like模糊匹配2演算法Oracle儲存過程SQL演算法
- go 如何呼叫 sqlserver 帶傳出引數的儲存過程GoSQLServer儲存過程
- 動態呼叫帶引數的儲存過程儲存過程
- 資料儲存與輸出輸入
- oracle儲存過程procedure輸入引數為空_如果顯示錶列不為 null的記錄Oracle儲存過程Null
- tcbs_批量儲存過程_輸入引數為空與非空的分支編寫儲存過程
- oracle procedure儲存過程輸入引數之動態sql傳入(括號及,逗號的特殊處理Oracle儲存過程SQL
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- Oracle dbms_scheduler建立帶輸入引數的JOBOracle
- 用oracle procedure儲存過程實現自表(列存在null)查詢不等於輸入引數的記錄Oracle儲存過程Null
- mysql儲存過程的引數MySql儲存過程
- SQLSERVER儲存過程如何寫帶引數的遊標SQLServer儲存過程
- oracle儲存過程將引數字串分割sqlOracle儲存過程字串SQL
- 專案風險管理各過程的輸入輸出關係
- 專案整合管理各過程的輸入輸出關係
- 專案成本管理各過程的輸入輸出關係
- 專案質量管理各過程的輸入輸出關係
- 專案溝通管理各過程的輸入輸出關係
- 專案採購管理各過程的輸入輸出關係
- 專案範圍管理各過程的輸入輸出關係
- 專案時間管理各過程的輸入輸出關係
- 輸入表名後自動生成sqlldr控制檔案儲存過程SQL儲存過程
- oracle的儲存過程Oracle儲存過程
- 專案人力資源管理各過程的輸入輸出關係