Обсуждение: Dynamic SQL Syntax help please

Поиск
Список
Период
Сортировка

Dynamic SQL Syntax help please

От
"Ruben Gouveia"
Дата:
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;


Re: Dynamic SQL Syntax help please

От
Ivan Sergio Borgonovo
Дата:
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



Re: Dynamic SQL Syntax help please

От
"Ruben Gouveia"
Дата:
thank you Sergio.

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 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


--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql