[英]Returning values from 2 select statements in Oracle Procedure
我堅持的家庭作業問題。
我需要創建一個名為 dept_info 的過程,其中部門 id 作為 IN 參數,該部門經理的部門名稱和全名(名字和姓氏的連接)作為要傳遞回調用程序的 OUT 參數。 該程序應在 PL SQL 塊內。
需要使用兩個表:departments 包含部門 ID、部門名稱和經理 ID,以及 employees 表,其中包含員工 ID(與經理 ID 相同)、名字和姓氏。
可執行部分應打印出部門 ID 100 的信息。
到目前為止,我的代碼是:
DECLARE
dept_id departments.department_id%TYPE;
dept_name VARCHAR(30);
mgr_id NUMBER(4);
full_name VARCHAR(100);
PROCEDURE dept_info(
dep_id IN departments.department_id%TYPE,
dep_name OUT departments.department_name%TYPE,
full_name OUT employees.first_name%TYPE)
IS
BEGIN
SELECT department_name, manager_id INTO dept_name, mgr_id FROM DEPARTMENTS WHERE department_id = dept_id;
SELECT first_name || ' ' || last_name AS full_name INTO full_name FROM EMPLOYEES WHERE employee_id = mgr_id;
END dept_info;
BEGIN
dept_info(100, dept_name, full_name);
DBMS_OUTPUT.PUT_LINE(dept_id || dept_name || full_name);
END;
這將返回“未找到數據”,這意味着我的 SELECT 和 INTO 語句中的數據無法正常工作。 任何幫助我指出正確方向的幫助表示贊賞。
更清晰的變量命名會有所幫助,但最后我在 SELECT 語句中使用了不正確的變量。 正確代碼:
DECLARE
dept_id departments.department_id%TYPE := 100;
dept_name VARCHAR(30);
mgr_id NUMBER(4);
full_name VARCHAR(46);
PROCEDURE dept_info(
dep_id IN departments.department_id%TYPE,
dep_name OUT departments.department_name%TYPE,
full_name OUT employees.first_name%TYPE)
IS
BEGIN
SELECT department_name, manager_id INTO dep_name, mgr_id FROM DEPARTMENTS WHERE department_id = dep_id;
SELECT first_name || ' ' || last_name AS full_name INTO full_name FROM EMPLOYEES WHERE employee_id = mgr_id;
END dept_info;
BEGIN
dept_info(100, dept_name, full_name);
DBMS_OUTPUT.PUT_LINE(dept_id || dept_name || full_name);
END;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.