ฐานข้อมูล mavens จะจดจำชื่อ Oracle ว่าเป็นโรงไฟฟ้าในโลกของระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (DBMS) ออราเคิลได้ผลิตโซลูชั่น DBMS ที่ทรงพลังมากมาหลายทศวรรษและยังคงเป็นผู้นำในด้านนี้ ผู้ใช้ผลิตภัณฑ์ฐานข้อมูลหลายรายอาจสับสนหรือสับสนเมื่อใช้โซลูชันที่ออกแบบไว้ล่วงหน้าและสร้างข้อความแสดงข้อผิดพลาด ข้อความแสดงข้อผิดพลาดทั่วไปที่ผลิตโดย Oracle คือข้อผิดพลาด ORA-06512
ดูบทความของเราวิธีแก้ไขข้อผิดพลาด ora-00942
Oracle เป็นระบบจัดการฐานข้อมูลที่มีมานานกว่าสี่สิบปีในรูปแบบต่างๆ เดิมใช้สิ่งที่เรียกว่า SCOTT schema ซึ่งตั้งชื่อตามพนักงานเดิมของ Oracle คุณยังเข้าสู่ระบบ Oracle เป็นครั้งแรกด้วยชื่อผู้ใช้ 'สกอตต์' และรหัสผ่าน 'เสือ' ซึ่งตั้งชื่อตามแมวของสกอตต์ ขณะนี้มีหลาย schema ที่ใช้ขึ้นอยู่กับสิ่งที่คุณใช้ Oracle สำหรับ
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Oracle ตั้งแต่เริ่มต้นหน้านี้มีประโยชน์มาก
แก้ไขข้อผิดพลาด ORA-06512
ใน Oracle ข้อผิดพลาด ORA-06512 เป็นข้อผิดพลาดข้อยกเว้นทั่วไปที่แจ้งให้คุณทราบว่ามีบางอย่างผิดปกติ เป็นหนึ่งในข้อผิดพลาดเฉพาะน้อยที่สุดที่ Oracle ผลิตขึ้นเพราะจะบอกคุณเท่านั้นว่ามีปัญหา แต่ไม่ใช่สิ่งที่ผิดพลาด
ตัวอย่างเช่นข้อความแสดงข้อผิดพลาดทั่วไปอาจอ่าน:
“ ORA-01422: การดึงข้อมูลที่แน่นอนส่งคืนมากกว่าจำนวนแถวที่ร้องขอ
ORA-06512: ที่“ DATABASE_NAME” บรรทัด 66
ORA-06512: ที่บรรทัด 1″
บรรทัดแรกจะบอกคุณว่าเกิดข้อผิดพลาดประเภทใดในกรณีนี้แบบสอบถามจะส่งคืนข้อมูลมากกว่าที่คาดไว้ดังนั้นจึงไม่ทราบวิธีจัดการกับปัญหา รหัส 'ORA-01422' เป็นรหัสข้อผิดพลาดจริงที่คุณต้องดู ORA-06512 เป็นเพียงรหัสข้อผิดพลาดทั่วไป
บรรทัดที่สองจะบอกคุณถึงข้อผิดพลาดที่เกิดขึ้น DATABASE_NAME จะเป็นฐานข้อมูลใด ๆ ที่คุณกำลังทำงานอยู่ในขณะนั้น บรรทัดที่ 66 คือบรรทัดที่มีข้อผิดพลาดเกิดขึ้นและเป็นบรรทัดที่คุณต้องตรวจสอบเพื่อแก้ไขข้อผิดพลาด
บรรทัดที่สามในไวยากรณ์ข้อผิดพลาดจะบอกคุณว่าการโทรมาจากที่ใด ตรวจสอบสายหนึ่งและคุณจะเห็นการเรียกไปยัง DATABASE_NAME
ในการแก้ไขข้อผิดพลาดนี้คุณต้องแก้ไขปัญหาที่เกิดจาก ORA-01422 ซึ่งเป็น 'การดึงข้อมูลที่แน่นอนส่งคืนมากกว่าจำนวนแถวที่ร้องขอ' หรือคุณต้องเพิ่มตัวจัดการข้อยกเว้นเพื่อบอก Oracle ให้เพิกเฉย เนื่องจากการแก้ไขปัญหาหลักมักจะดีกว่านี่คือวิธีที่จะไป
มีสองสิ่งที่คุณสามารถทำได้ หากคุณคาดว่าแบบสอบถามจะส่งคืนมากกว่าแถวเดียวคุณสามารถแก้ไขได้เพื่อไม่ให้ประหลาดใจ หากคุณคาดหวังให้แบบสอบถามส่งคืนแถวเดียวคุณสามารถแก้ไขแบบสอบถามนั้นได้เช่นกัน
ต้องการมากกว่าหนึ่งแถว:
สำหรับ X in (เลือก * จาก t ที่ไหน … )
ห่วง
- ประมวลผลระเบียน X ที่นี่
ปลายวง;
สิ่งนี้ควรกำจัดข้อผิดพลาดในการสืบค้นฐานข้อมูลซึ่งจะส่งคืนมากกว่าหนึ่งแถว
หากคุณคาดหวังว่าจะส่งคืนแถวเดียวคุณสามารถลอง:
เริ่ม
เลือก * เป็น …
จาก t ที่ไหน….
กระบวนการ….
ข้อยกเว้น
เมื่อ NO_DATA_FOUND นั้น
การจัดการรหัสผิดพลาดเมื่อไม่พบบันทึก
เมื่อ TOO_MANY_ROWS
ข้อผิดพลาดในการจัดการรหัสเมื่อพบระเบียนมากเกินไป
จบ;
วิธีที่สองนี้ควรส่งเพียงแถวเดียวโดยไม่ทิ้งข้อผิดพลาด 'ORA-01422: การดึงข้อมูลที่แน่นอนส่งกลับมากกว่าจำนวนแถวที่ร้องขอ' ข้อผิดพลาดและดังนั้นข้อผิดพลาด ORA-06512 ดั้งเดิม
คุณสามารถปรับแต่งแบบสอบถามเพื่อที่จะส่งกลับเฉพาะแถวแรกของคำตอบหลายแถว สิ่งนี้อาจทำงานได้หากคุณไม่สามารถควบคุมฐานข้อมูลได้อย่างสมบูรณ์หรือไม่ต้องการยุ่งกับสิ่งต่าง ๆ มากเกินไป แต่ยังต้องการคำตอบ
ประกาศ
เคอร์เซอร์ c1 สำหรับเลือก * จาก t ที่ไหน …
เริ่ม
เปิด c1;
ดึง c1 เข้า ..
ถ้า (c1% ไม่พบ) จากนั้น
การจัดการข้อผิดพลาดสำหรับไม่พบบันทึก
จบถ้า;
ปิด c1;
จบ;
(ถ้าคุณรู้จัก SQL คุณอาจสับสนเล็กน้อยจากบรรทัดคำสั่งเหล่านี้… Oracle ไม่ได้ใช้ Transact-SQL แต่เป็นภาษาเสริมของ SQL, PL / SQL ในขณะที่คล้ายกับ Transact-SQL, PL / SQL มีหลายสิ่งที่ฉลาดและเป็นเครื่องมือที่ทรงพลังมากในตัวของมันเองคุณอาจพบว่าคำถามที่พบบ่อยเกี่ยวกับ PL / SQL นี้มีประโยชน์เมื่อพยายามเรียนรู้เกี่ยวกับ Oracle)
ดังนั้นบทเรียนพื้นฐานที่นี่เป็นมากกว่าข้อผิดพลาดของ ORA-06512 ในตัวของมันเองไม่ใช่สิ่งที่คุณสามารถแก้ไขได้โดยตรง แต่คุณต้องคิดออกว่าความผิดพลาดจริงคืออะไรซึ่งรหัสข้อผิดพลาดอื่น ๆ จะบอกคุณแล้วจัดการข้อผิดพลาดเหล่านั้นทีละตัว
คุณมีคำแนะนำหรือเคล็ดลับในการแบ่งปันของ Oracle หรือไม่? แจ้งให้เราทราบเกี่ยวกับพวกเขาในความคิดเห็น!