sql 中位数_【PL/SQL 自定义函数】 常用场景
生活随笔
收集整理的這篇文章主要介紹了
sql 中位数_【PL/SQL 自定义函数】 常用场景
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看完這章后你會學習到以下內容:
1.練習場景
2.面試場景
3.工作應用場景
總覽思維導圖:
面試部分:
1.創建函數,從emp表中查詢指定員工編號的職工的工資
2.*創建函數,返回emp表中指定職工的工資和姓名。
返回值是兩個,可用return返回一個,另一個用out參數帶回
3.創建函數,根據給定的部門編號(提示: 利用&)計算該部門所有職工的平均工資。
CREATE OR REPLACE FUNCTION F_INPUTEMPNO(F_DEPTNO IN DEPT.DEPTNO%TYPE) RETURN NUMBER IS V_SAL NUMBER;BEGIN SELECT AVG(SAL) INTO V_SAL FROM EMP WHERE DEPTNO = F_DEPTNO; RETURN V_SAL; END;--- 調用時候,在輸入名稱前加入&,類似于VBA里的Input函數SELECT F_INPUTEMPNO(&部門編號) AS 平均工資 FROM DUAL;4.創建一個函數,僅有一個形參,它接收調用函數中傳遞過來的實參--部門號,函數的返回值為該部門的一整條記錄信息.
CREATE OR REPLACE FUNCTION F_EMPINFO(F_DEPTNO IN DEPT.DEPTNO%TYPE)RETURN DEPT%ROWTYPE ISV_DEPT DEPT%ROWTYPE;BEGINSELECT * INTO V_DEPT FROM DEPT WHERE DEPTNO = F_DEPTNO;RETURN V_DEPT;END;DECLARE V_DEPT DEPT%ROWTYPE;BEGINV_DEPT := F_EMPINFO(20); --- 傳遞參數給到調用函數時新定義得變量V_Dept;DBMS_OUTPUT.PUT_LINE('部門名: '||V_DEPT.DNAME || ' 部門位置: ' || V_DEPT.LOC);END;5*.創建函數,將emp表中工資低于平均工資的職工工資加上200,并返回修改了工資的總人數。注意:Update后面要加上Where語句否則全部都更新,其次我們善用%ROWCOUNT.
CREATE OR REPLACE FUNCTION F_MODIFY RETURN NUMBER IS BEGINUPDATE EMP SET SAL=SAL+200 WHERE SAL<(SELECT AVG(SAL) FROM EMP);RETURN SQL%ROWCOUNT; /* sql%rowcount用于記錄修改的條數,必須放在一個更新或者刪除等修改類語句后面執行,select語句用于查詢的話無法使用,當你執行多條修改語句時,按照sql%rowcount 之前執行的最后一條語句修改數為準。*/ END; / 調用 BEGINDBMS_OUTPUT.PUT_LINE(F_MODIFY); END; /面試過程
1.輸入2個整數,返回最小到最大數之間的連乘的結果(兩個整數在1到20之間);
思路: 先對兩個數進行范圍的設置,用IF加AND判斷。
然后兩個數字一共三種可能:
A大于B,A小于B,A等于B 用IF Elsif 方式做條件判斷。
2.輸入3個整數,取中位數。
--- 方法一 CREATE OR REPLACE FUNCTION FUNA(P1 IN INT,P2 IN INT,P3 IN INT)RETURN INTEGER IS V_RESULT INTEGER;BEGIN SELECT CASE WHEN P1 >= P2 AND P1 <= P3 THEN P1WHEN P2 >= P1 AND P2 <= P3 THEN P2WHEN P3 >= P1 AND P3 <= P2 THEN P3 ENDINTO V_RESULT FROM DUAL;RETURN V_RESULT;END;----- 方法二 CREATE OR REPLACE FUNCTION FUN_middle(X1 IN NUMBER,X2 IN NUMBER,X3 IN NUMBER)RETURN numberIS BEGINIF (X1-X2)*(X1-X3)<=0 then return x1;elsif (x2-x1)*(x2-x3)<=0 then return x2;elsif(x3-x1)*(x3-x2)<=0 then return x3;end if;end;3. 對比兩個數,返回一個最大值。可以在設置參數時,順帶設置默認值
-- 傳入兩個參數,返回最大值CREATE OR REPLACE FUNCTION FUN_MAX (P_NUM1 IN NUMBER, P_NUM2 IN NUMBER DEFAULT 99)RETURN NUMBER -- 函數的返回類型ISBEGINIF P_NUM1>P_NUM2 THEN RETURN P_NUM1; ELSE RETURN P_NUM2; END IF;END;3. 工作場景(一)
-- 函數返回類型為游標(對應報表接口)
總結
以上是生活随笔為你收集整理的sql 中位数_【PL/SQL 自定义函数】 常用场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 正面管教读书笔记 08 班会
- 下一篇: linux cmake编译源码,linu