我正在閱讀一本教授PL/SQL的書,但是就像這個主題上的許多資源一樣,它提供了有關其示例的粗略細節。有人能幫我解決這個問題嗎(從文本中逐字逐句地)?該文本沒有提供使用代碼的示例表。示例pl/sql函數 - 闡述?
下面的代碼創建,將根據給定的僱員編號返回僱員名稱的函數: -
CREATE OR replace FUNCTION Getname (p_empno emp.empno%TYPE)
RETURN VARCHAR
IS
CURSOR empname_cur(
p_empno emp.empno%TYPE) IS
SELECT ename
FROM emp
WHERE empno = p_empno;
r_empname empname_cur%ROWTYPE;
BEGIN
OPEN empname_cur(p_empno);
FETCH empname_cur INTO r_empname;
IF empname_cur%NOTFOUND THEN
r_empname.ename := 'UNKNOWN EMPLOYEE';
END IF;
CLOSE empname_cur;
RETURN r_empname.ename;
END;
首先,上述函數聲明遊標檢索僱員姓名,光標然後打開,執行提取,如果沒有行被發現,則名稱被設置爲UNKNOWN EMPLOYEE,光標關閉並且名稱返回到調用程序。
該功能可以從SQL語句如下叫: -
SELECT GetName(empno) name
amount
FROM bonus;
所以...... 是什麼在呼喚p_empno?這是表名嗎?它是一個參數的佔位符,其類型與列emno是什麼相同?
這是最令人困惑的我該生產線是
r_empname empname_cur%ROWTYPE;
這到底是在做什麼?什麼是r_empname
?當調用GetName時,那個尾隨的「name」非參數化參數是什麼?