Anonim

ฐานข้อมูล 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 หรือไม่? แจ้งให้เราทราบเกี่ยวกับพวกเขาในความคิดเห็น!

วิธีการแก้ไขข้อผิดพลาด ora-06512 ใน oracle db