PL/ภาษา sql ฟังก์ชันจะกลับมาเป็นลูกค้าชื่อของให้หมายเลขลำดับ

0

คำถาม

/สร้างเป็น PL/ภาษา sql ฟังก์ชัน get_customer_name ที่จะคืนค่ากลับมาเป็น ลูกค้าชื่อของได้รับคำสั่งบัตรประจำตัวครรับ/

/ตอนที่ฉันเรียกฟังก์ชันฉันได้รับที่ลูกค้าหมายเลขเหตุผล ฟังก์ชันควรจะกลับไปที่ลูกค้าชื่อ ฉันพลาดอะไรไป/

--ณื PL/ภาษา sql การตรวจสอบสิทธิ์--

CREATE OR REPLACE FUNCTION get_customer_name(cust_id IN VARCHAR)
RETURN NUMBER
IS 
cname VARCHAR2 (50);
BEGIN
    SELECT customer_id INTO cname FROM s_order_t o WHERE o.order_id = cust_id;
    RETURN cname;
    EXCEPTION
    WHEN no_data_found THEN
    DBMS_OUTPUT.PUT_LINE('NO SUCH EMPLOYEE');
RETURN -1;
END;

/เขียนข้อ PL/ภาษา sql โปรแกรมจะเรียก ฟังก์ชันนี้กับใครบางสั่งหมายเลขเป็นข้อมูลและพิมพ์ออกจากผลลัพธ์เดียวกันนั่นแหละ/ --เรียกฟังก์ชัน:--

DECLARE
cname VARCHAR2 (50);
BEGIN
    cname := get_customer_name (1010);
    DBMS_OUTPUT.PUT_LINE (cname);
END;
oracle
2021-11-23 18:52:27
1

คำตอบที่ดีที่สุด

0

คุณไม่ outputting ที่ลูกค้าชื่อของคุณอาจจะต้อง JOIN ต้องเป็น customers โต๊ะและไป name คอลัมน์(สรุปว่าว่านั่นคือสิ่งที่พวกเขาเรียกว่า):

CREATE OR REPLACE FUNCTION get_customer_name(
  cust_id IN S_ORDER_T.ORDER_ID%TYPE
) RETURN CUSTOMERS.NAME%TYPE
IS 
  cname CUSTOMERS.NAME%TYPE;
BEGIN
  SELECT name
  INTO   cname
  FROM   s_order_t o
         INNER JOIN customers c
         ON (o.customer_id = c.id)
  WHERE o.order_id = cust_id;

  RETURN cname;
EXCEPTION
  WHEN no_data_found THEN
    RETURN NULL;
END;
/

สำหรับตัวอย่างข้อมูล:

CREATE TABLE IF NOT EXISTS customers (
  id INTEGER PRIMARY KEY,
  name VARCHAR2(20)
);

CREATE TABLE IF NOT EXISTS s_order_t (
  order_id INTEGER PRIMARY KEY,
  customer_id REFERENCES customers
);

INSERT IGNORE INTO customers VALUES (1, 'Alice');
INSERT IGNORE INTO s_order_t VALUES (1010, 1);

แล้ว:

DECLARE
  cname CUSTOMERS.NAME%TYPE;
BEGIN
  cname := get_customer_name (1010);
  DBMS_OUTPUT.PUT_LINE (cname);
END;
/

แสดงผล:

Alice

db<>ลื่นไหล มาที่นี่

2021-11-23 21:57:59

ขอบคุณ มันทำงานกับใครบางเล็กน้อยเปลี่ยนแปลง
Chuck

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่