Обсуждение: Dynamic SQL Syntax help please
I created a simple function that i want to use another function (in the same schema) that will be used to create a sql statement. I get the following error when i try this:
ERROR: syntax error at or near "EXEC" at character 1
QUERY: EXEC SQL EXECUTE $1 INTO $2
CONTEXT: SQL statement in PL/PgSQL function "fcn_population" near line 10
********** Error **********
ERROR: syntax error at or near "EXEC"
SQL state: 42601
Context: SQL statement in PL/PgSQL function "fcn_population" near line 10
Here is my function:
CREATE OR REPLACE FUNCTION fcn_population(p_date date, p_where varchar)
RETURNS numeric AS $$
DECLARE
v_total_pop numeric := 0;
v_stmt varchar(1024);
v_where varchar(256) := 'where m.date_created < '||p_date||' '||+ integer '1'||' ';
BEGIN
v_stmt := fcn_gen_statement(p_type, v_where, 0);
EXEC SQL EXECUTE v_stmt INTO v_total_pop;
return v_total_pop;
END;
$$ LANGUAGE plpgsql;
ERROR: syntax error at or near "EXEC" at character 1
QUERY: EXEC SQL EXECUTE $1 INTO $2
CONTEXT: SQL statement in PL/PgSQL function "fcn_population" near line 10
********** Error **********
ERROR: syntax error at or near "EXEC"
SQL state: 42601
Context: SQL statement in PL/PgSQL function "fcn_population" near line 10
Here is my function:
CREATE OR REPLACE FUNCTION fcn_population(p_date date, p_where varchar)
RETURNS numeric AS $$
DECLARE
v_total_pop numeric := 0;
v_stmt varchar(1024);
v_where varchar(256) := 'where m.date_created < '||p_date||' '||+ integer '1'||' ';
BEGIN
v_stmt := fcn_gen_statement(p_type, v_where, 0);
EXEC SQL EXECUTE v_stmt INTO v_total_pop;
return v_total_pop;
END;
$$ LANGUAGE plpgsql;
On Thu, 4 Sep 2008 13:41:16 -0700 "Ruben Gouveia" <rubes7202@gmail.com> wrote: > I created a simple function that i want to use another function > (in the same schema) that will be used to create a sql statement. > I get the following error when i try this: > > *ERROR: syntax error at or near "EXEC" at character 1 > QUERY: EXEC SQL EXECUTE $1 INTO $2 > CONTEXT: SQL statement in PL/PgSQL function "fcn_population" near > line 10 > EXEC SQL EXECUTE v_stmt INTO v_total_pop; Could it be you're mixing MS SQL (Oracle?) syntax with pgplsql syntax EXECUTE v_stmt INTO v_total_pop; http://www.postgresql.org/docs/8.3/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN -- Ivan Sergio Borgonovo http://www.webthatworks.it
thank you Sergio.
I decided to use
EXECUTE v_stmt into v_total_pop;
I decided to use
EXECUTE v_stmt into v_total_pop;
On Thu, Sep 4, 2008 at 2:00 PM, Ivan Sergio Borgonovo <mail@webthatworks.it> wrote:
On Thu, 4 Sep 2008 13:41:16 -0700
"Ruben Gouveia" <rubes7202@gmail.com> wrote:
> I created a simple function that i want to use another function
> (in the same schema) that will be used to create a sql statement.
> I get the following error when i try this:
>
> *ERROR: syntax error at or near "EXEC" at character 1
> QUERY: EXEC SQL EXECUTE $1 INTO $2
> CONTEXT: SQL statement in PL/PgSQL function "fcn_population" near
> line 10> EXEC SQL EXECUTE v_stmt INTO v_total_pop;Could it be you're mixing MS SQL (Oracle?) syntax with pgplsql syntaxhttp://www.postgresql.org/docs/8.3/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
EXECUTE v_stmt INTO v_total_pop;
--
Ivan Sergio Borgonovo
http://www.webthatworks.it
--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql