25 January 2011

Should the PL/SQL Challenge be constrained to documented features?

I received this note today regarding the 24 January quiz on overloading (in which I test your knowledge of the fact that you can overload a procedure and function with same name and parameter list):

I am registering a protest about the 1/24 quiz. I have used overloading before, but not having access to an Oracle instance in my current job I must rely on the documentation, so when I could not recall clearly if different types of programs qualified for overloading, it checked the documentation. The documentation reads "You can use the same name for several different subprograms as long as their formal parameters differ in number, order, or datatype family.". I even checked the definition of “formal parameters” and “actual parameters” to see if that included the program name and it does not appear to. I would like credit for the correct answer.

This is what I wrote back to the player:

I am disappointed to hear that the documentation does not include reference to or example of overloading that differs by program type - but I am not terribly surprised.

One thing I have learned from the Challenge is just how lacking the documentation can be. But I cannot organize the Challenge and its quizzes solely around what is available in the official documentation.

It is definitely a bummer that you have no access to an Oracle instance when you take the quiz. I couldn't really imagine taking the Challenge and hoping to do really well just based on my memory and the documentation (though you might want to supplement your doc checks with checking my books or other resources as well!).

But I do not believe that a rescoring is required in this situation.

I would like to hear what you think about this as well.


  1. You could also overload functions based on their return value (AFAIK) - even if the functions might not even have a parameter list.

    We had a question a little while ago that showed a view of plsql parameters where "parameter zero" was the return value of a function. So the "unique" thing that makes overloading possible is the number, order and datatype family of parameters AND return values of functions (return values being considered "parameter zero" and therefore internally part of the "formal parameter list.")

    Yes, the documentation is not clear on this point. You could very well be misled by the documentation.

    But I would be disappointed if the quiz only had answers that could be found clearly stated in the documentation. I view the PL/SQL challenge as a place to learn things I otherwise might never know. The documentation (while generally fairly good) in many places never touches the "tricky" points - and the tricky points are just the ones we learn a lot from as programmers...

    Had I not already known the answer to this one, I would think "wow, I didn't know you could overload with different datatypes of return values - neat!" when I read the correct answer. I would learn from my wrong answers :-)

    (Of course there should also be questions that can be answered using documentation - we need a good mix in order that the Challenge can be challenging for all people...)

  2. I can understand a temporary inability to access a genuine instance, but if that is the long term truth of a player...why are they playing?

  3. And what is wrong with some guessing? I've not always time to look through documentation or type the code in (with all typo's generated that leads to wrong answers...) and not always it is about knowledge I have. So simple guessing is sometimes the best solution.
    I take time later to study the interesting questions.
    And ok, it is possible to win prizes, but that is not the most important part of this quiz.

  4. I agree with CIW, if you're looking up the answer in the documentation instead of answering from what you know, why bother? Why not just admit you cheated or that the only thing you're testing is that how to read a manual.

    I got this question wrong too because I was relying on my memory of RTFM about what constituted a signature. But I'm not whining to get credit.

    BTW, I'm considering applying for a job and wanted to tell my perspective employer to check my stats here. I assume that's okay? I guess I value honesty more than this player, so I'm not faking my stats to make myself look better.

  5. Hello All,
    I think that most of the Oracle documentation is pretty good, though, in my opinion, in the later versions the different books tend to be "less well organized" than they used to be in the past,
    and maybe a good example are the PL/SQL books.

    It is more than probable that the documentation does not explicitly specify each and every piece of behavior, or at least does not specify it exactly in the place where you might have expected to find it or to look after it.

    Documentation is usually under a more severe attack when it proves to be inexact regarding a feature, and maybe less when it just does not mention everything, which is also a matter of space, style, need to cover more and more features with every new version or release, a.s.o.

    For example, the feature of overloading a function and a procedure with the same name
    does appear in the Oracle supplied packages reference guide, where some packages contain overloaded functions and procedures with the same name.
    But, right, I don't think that this is exactly the place where one would have run to check the issue for his first time ...

    Regarding "taking the quiz far from an Oracle instance", this SOMETIMES does happen, and I cannot definitely say that it is always bad, this prevents you from even thinking to run and check things out during the quiz and forces you to rather exercise your "stored knowledge".

    But yes, it is difficult to imagine NEVER having access to an instance ... that maybe will happen to some of us after we will retire and hopefully continue to play the PL/SQL Challenge :):) :)

    Best Regards,

  6. Regarding:

    BTW, I'm considering applying for a job and wanted to tell my perspective employer to check my stats here. I assume that's okay?

    YES YES YES. We implemented the public profile and all its options so that you could construct a page that a prospective employer could look at.

  7. If you can access the PL/SQL Challenge you should be able to access apex.oracle.com and use that Oracle instance though the SQL Worksheet.

  8. Great idea! Perhaps I should add that into the advice for the quiz....

  9. Documentation can be fallible, and it can't always cover every scenario. Short response: limit questions to behaviour, not documentation. Everyone here keeps hitting on the right reasons

  10. For me the documentation is about learning the basics of new features before I test them on a running (test-)instance. And you must test them on a running instance.

    For example the quiz about overriding methods in object type hierarchies was something I have not used till now (although I really often create object-types for use inside of PL/SQL) so I took a quick look at the syntax diagrams in the reference handbook. And in none of the syntax diagrams from version 10gR2 over 11gR1 to 11gR2 the OVERRIDING keyword doesn't exisit in the type body.

    But what I really don't like on the documentation is that I must look into the 9iR2 documentation when I want to know what a raised exceptions means and what I can do to prevent it. Since 9i the error messages handbooks are ignoring more and more errors. In my opinion that must be the documentation that should be the most completed and excact documentation