ข้อผิดพลาด PLS-00306: วิธีการหาอาร์กิวเมนต์ที่ผิด?


11

PLS-00306: หมายเลขหรือประเภทของอาร์กิวเมนต์ที่โทรหา 'string' ผิด

สาเหตุ: ข้อผิดพลาดนี้เกิดขึ้นเมื่อการเรียกโปรแกรมย่อยที่มีชื่อไม่สามารถจับคู่กับการประกาศใด ๆ สำหรับชื่อโปรแกรมย่อยนั้น ชื่อโปรแกรมย่อยอาจสะกดผิดพารามิเตอร์อาจมีประเภทข้อมูลที่ไม่ถูกต้องการประกาศอาจผิดพลาดหรือการประกาศอาจวางไว้อย่างไม่ถูกต้องในโครงสร้างบล็อก ตัวอย่างเช่นข้อผิดพลาดนี้เกิดขึ้นหากฟังก์ชั่นสแควร์รูทในตัว SQRT ถูกเรียกด้วยชื่อที่สะกดผิดหรือด้วยพารามิเตอร์ของประเภทข้อมูลที่ไม่ถูกต้อง

การดำเนินการ: ตรวจสอบการสะกดคำและการประกาศชื่อโปรแกรมย่อย นอกจากนี้ยังยืนยันว่าการโทรนั้นถูกต้องพารามิเตอร์นั้นเป็นประเภทข้อมูลที่ถูกต้องและหากไม่ใช่ฟังก์ชันในตัวการประกาศจะถูกวางไว้อย่างถูกต้องในโครงสร้างบล็อก

ฉันจะระบุข้อโต้แย้งที่ผิดได้อย่างรวดเร็วได้อย่างไร

ฉันมีขั้นตอนการจัดเก็บพร้อมพารามิเตอร์หลายสิบตัว มีวิธีง่าย ๆ ในการตรวจสอบความแตกต่างระหว่างขั้นตอนที่ใช้และขั้นตอนที่กำหนดหรือไม่ ฉันไม่ต้องการตรวจสอบทีละบรรทัด ..

คำตอบ:


11

ไม่ที่นี่ไม่มีทางลัดจริงๆ ตรวจสอบสิ่งต่าง ๆ ตามลำดับต่อไปนี้:

  1. ตรวจสอบชื่อกระบวนงาน
  2. ตรวจสอบจำนวนพารามิเตอร์
  3. ตรวจสอบประเภทของพารามิเตอร์
  4. ตรวจสอบชื่อพารามิเตอร์

4
ตรวจสอบชื่อพารามิเตอร์หากเรียกใช้โดยใช้ชื่อ นั่นเพิ่งจะจับฉันออก
swref

การตรวจสอบชื่อของพารามิเตอร์เป็นกุญแจสำคัญสำหรับฉันขอบคุณ
Arpit Aggarwal

อาจเป็นประเภทวัตถุ
Arthur
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.