Обсуждение: Tracking Down Error in Stored Procedure
I have a nightly batch that runs a stored procedure/function. This procedure has a habit of erroring on the first of eachmonth and gives the following:<br /><br />ERROR: cannot EXECUTE a null querystring<br />CONTEXT: PL/pgSQL function"update_web_site_hits_fn" line 200 at execute statement<br /><br />My question is this: What is line 200? Is itthe 200th line after the CREATE part of the stored procedure? Or is it the 200th line after the BEGIN? Or maybe somethingelse? I have a possible culprit at both places and don't know which one is the offender. <br /><br />Also, if theEXECUTE is over many lines, is line 200 the first line of the EXECUTE statement or the ending line of the EXECUTE (wherethe ; is)?<br /><br />I am using PostgreSQL 8.1.3 on CENTOS Linux.<br /><br />Thanks,<br /> Aaron<br clear="all" /><br/>-- <br />==================================================================<br /> Aaron Bono<br /> Aranya SoftwareTechnologies, Inc.<br /> <a href="http://www.aranya.com">http://www.aranya.com</a><br /> <a href="http://codeelixir.com">http://codeelixir.com</a><br />==================================================================
"Aaron Bono" <postgresql@aranya.com> writes: > CONTEXT: PL/pgSQL function "update_web_site_hits_fn" line 200 at execute > statement > My question is this: What is line 200? Is it the 200th line after the > CREATE part of the stored procedure? Or is it the 200th line after the > BEGIN? Or maybe something else? It's the 200th line in the function body string. IIRC there is a special case to not count a leading newline in the body string, so that the counting goes like CREATE FUNCTION foo ... RETURNS ... AS $$ DECLARE -- this is line 1 or without exploiting the special case CREATE FUNCTION foo ... RETURNS ... AS $$DECLARE -- this is line 1 regards, tom lane
On 12/2/06, Tom Lane <tgl@sss.pgh.pa.us> wrote:
I got it fixed. Thanks for the help!
--
==================================================================
Aaron Bono
Aranya Software Technologies, Inc.
http://www.aranya.com
http://codeelixir.com
==================================================================
"Aaron Bono" <postgresql@aranya.com> writes:
> CONTEXT: PL/pgSQL function "update_web_site_hits_fn" line 200 at execute
> statement
> My question is this: What is line 200? Is it the 200th line after the
> CREATE part of the stored procedure? Or is it the 200th line after the
> BEGIN? Or maybe something else?
It's the 200th line in the function body string. IIRC there is a
special case to not count a leading newline in the body string,
so that the counting goes like
CREATE FUNCTION foo ...
RETURNS ...
AS $$
DECLARE -- this is line 1
or without exploiting the special case
CREATE FUNCTION foo ...
RETURNS ...
AS $$DECLARE -- this is line 1
regards, tom lane
I got it fixed. Thanks for the help!
--
==================================================================
Aaron Bono
Aranya Software Technologies, Inc.
http://www.aranya.com
http://codeelixir.com
==================================================================