資料庫開發---常用物件-函式
資料庫開發---常用物件-函式,儲存過程,遊標,觸發器,包
----函式
1>函式和存數過程的區別:
儲存過程 函式
---------------------------------- -------------------------------
不能被作為表示式呼叫 只能作為表示式被呼叫
宣告頭部關鍵字為procedure 宣告頭部關鍵字為function
宣告頭部不包含return關鍵字來描述返回型別 頭部必須包含return關鍵字,且PL/SQL塊中至少包含一個有效的return語句
可以透過out,in out返回零個或多個值 透過return語句返回一個與頭部宣告中型別一致的值,也可使用in,in out返回值
SQL語句中不可呼叫儲存過程 SQL語句可以呼叫函式
多用於資料庫中完成特定的操作,如刪除,更新,插入等DML操作 多用於特定的資料如選擇等
---建立語句
create or replace function test_func_1 return varchar2 is
begin
dbms_output.put_line('hello world!');
return 1;
end;
---函式的執行
create or replace function get_user return varchar2 is
v_user varchar2(10);
begin
select username into v_user from user_users;
return v_user;
end;
/
1、使用變數接收。
SQL> var current_user varchar2(10)
SQL> exec :current_user:=get_user
2、使用SQL
select get_user from dual;
3、使用exec呼叫
execute
exec
SQL> set serveroutput on
4、call
call dbms_output.put_line('當前登入的使用者是: '||get_user);
5、塊中呼叫(匿名塊中或函式儲存過程中都可以)
begin
dbms_output.put_line('當前登入的使用者是: ' || get_user);
end;
/ declare v_user varchar2(10);
begin
v_user := get_user;
end;
/
select get_user from dual;
2>常用的查詢函式相關定義的語句:
select owner,object_name,object_type from dba_objects where object_name='GET_INFO';
select text from user_source where name='TEST_FUNC_1';--查出函式定義資訊
1.得到一個表或索引的ddl語句
SELECT DBMS_METADATA.GET_DDL('TABLE','DEPT','SCOTT') FROM DUAL;
select dbms_metadata.get_ddl('INDEX','PK_DEPT','SCOTT') from dual;
2.得到一個使用者下的所有表,索引,儲存過程的ddl
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)
FROM USER_OBJECTS u
where U.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE');
3.得到所有表空間的ddl語句
SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)
FROM DBA_TABLESPACES TS;
4.得到所有建立使用者的ddl
SELECT DBMS_METADATA.GET_DDL('USER',U.username)
FROM DBA_USERS U;
3>函式中傳入傳出引數的用法
create or replace function get_sal(name IN varchar2) -----IN 即是傳入的變數
return number as
v_sal emp.sal%type;
begin
select sal into v_sal from emp where ename = NAME;
return v_sal;
end;
SELECT GET_SAL('SCOTT') FROM DUAL;
create or replace function get_sal(name out varchar2) -----IN 即是傳入的變數,不能作為賦值目標
return number as
v_sal emp.sal%type;
begin
select sal into v_sal from emp where ename = name;
name := 'SCOTT';
return v_sal;
end;
create or replace function get_info(name in varchar2,
ejob out varchar2) return varchar2 as
v_dname dept.dname%type;
begin
select e.job, d.dname
into ejob, v_dname
from emp e, dept d
where e.deptno = d.deptno
and e.ename = name;
return v_dname;
end;
/
declare
----v_job用來接收需要傳出的值,而in引數則不能接受傳入引數! v_dname接收的是傳入的的值
v_job varchar2(20) := 'abc';
v_dname varchar2(20);
begin
dbms_output.put_line(v_job);
v_dname := get_info('JAMES', v_job);
dbms_output.put_line('部門:' || v_dname || ' 職位:' || v_job);
end;
/
----傳值的方式
v_dname:=get_info(name =>'JAMES',ejob => v_job);
v_dname:=get_info('JAMES',ejob => v_job);
4>函式的語法結構
create or replace function func_name return type is/as
begin
;
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30018455/viewspace-1399244/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS開發資料庫篇—SQLite常用的函式iOS資料庫SQLite函式
- 資料庫開發---常用物件-觸發器資料庫物件觸發器
- 資料庫開發---常用物件-遊標資料庫物件
- 資料庫開發---常用物件-儲存過程資料庫物件儲存過程
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- iOS開發常用函式iOS函式
- 資料庫開發基礎---next_day函式資料庫函式
- 資料庫開發(19)基於物件的資料庫資料庫物件
- 資料倉儲開發報表常用函式—ROLLUP和GROUPING函式
- 資料庫SQl語言最常用的字串函式資料庫SQL字串函式
- sqlite 資料庫 支援的資料型別 以及常用的函式SQLite資料庫資料型別函式
- Sql Server 資料庫學習-常用資料庫 物件SQLServer資料庫物件
- 開發常用的輔助函式函式
- php開發常用函式總結PHP函式
- oracle開發常用到的函式Oracle函式
- js客戶端資料庫的物件與函式 (轉)JS客戶端資料庫物件函式
- 資料庫SQL語言最常用的數字函式資料庫SQL函式
- INFORMIX資料庫函式ORM資料庫函式
- JS開發常用工具函式JS函式
- 大資料開發-Hive-常用日期函式&&日期連續題sql套路大資料Hive函式SQL
- 6.5. 常用物件——6.5.5. 函式物件函式
- 【大資料開發】Hive——Hive函式大全大資料Hive函式
- 鴻蒙原生應用開發——分散式資料物件鴻蒙分散式物件
- 7.資料庫函式資料庫函式
- 微信小程式 #雲開發 #雲端儲存 #雲資料庫 #雲函式微信小程式資料庫函式
- PHP Oracle 資料庫函式庫(轉)PHPOracle資料庫函式
- 【資料庫之函式依賴】資料庫函式
- MS-SQL資料庫開發常用匯總 (收藏)SQL資料庫
- lr中常用函式以str開頭函式函式
- 好程式設計師大資料培訓分享之《MySQL資料庫》常用函式整理程式設計師大資料MySql資料庫函式
- 【從零開始學習 MySql 資料庫】(2) 函式MySql資料庫函式
- 【從零開始學習Oracle資料庫】(2)函式Oracle資料庫函式
- Java物件導向系列[v1.0.0][SQL語法之資料庫函式]Java物件SQL資料庫函式
- 資料庫操作常用函式大全(Sql Server 2000 oracle9i)資料庫函式SQLServerOracle
- 利用wordpress的資料庫操作函式資料庫函式
- mysql資料庫時間戳函式MySql資料庫時間戳函式
- SQL SERVER資料庫datediff函式引發的效能問題SQLServer資料庫函式
- 頭歌資料庫實驗七:函式與觸發器資料庫函式觸發器