PLS-00306: wrong number or types of arguments in call to 'string'

Cause: This error occurs when the named subprogram call cannot be matched to any declaration for that subprogram name. The subprogram name might be misspelled, a parameter might have the wrong datatype, the declaration might be faulty, or the declaration might be placed incorrectly in the block structure. For example, this error occurs if the built-in square root function SQRT is called with a misspelled name or with a parameter of the wrong datatype.

Action: Check the spelling and declaration of the subprogram name. Also confirm that its call is correct, its parameters are of the right datatype, and, if it is not a built-in function, that its declaration is placed correctly in the block structure.

How do I quickly identify the wrong argument?

I have a stored-procedure with dozens of parameters. Is there an easy way to check the differences between the used and defined procedure? I don't want to check it line by line..


No, there's really no shortcuts here. Examine things in the following order:

  1. Check the procedure name.
  2. Check the number of parameters.
  3. Check the types of the parameters.
  4. Check the parameter names.
  • 4
    Also check the parameter names if calling them by name. That just caught me out. – swref Jan 30 '17 at 15:28
  • checking the name of parameters is the key for me, thanks. – Arpit Aggarwal Jan 29 '19 at 5:19
  • It could be the Object type – Arthur Sep 18 '19 at 14:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.