Thanks for your reply.

If I substitute double quotes with single quotes (or with double dollar
sign",
and run the code:

DO $$
DECLARE
    i integer;
BEGIN
FOR i IN (select nn from numeros)
LOOP
EXECUTE
'create table contagio' || i || ' as
SELECT *
 FROM pgr_drivingdistance('
      SELECT gid AS id,
          source,
          target,
          tempo::float8 AS cost
      FROM lisboa',
      ' || i || ' ,
      30,
      false,
      false)
';
END LOOP;
END;
$$;
---------------------------------

I get the error:

--------------------------------------------------------------------------------------------
ERROR:  syntax error at or near "SELECT"
LINE 11:       SELECT gid AS id,
               ^


********** Error **********

ERROR: syntax error at or near "SELECT"
SQL state: 42601
Character: 165
---------------------------------------------------------------------------------------------

I'm probably missing something simple, but what?

António






2013/9/29 Adrian Klaver <adrian.kla...@gmail.com>

> On 09/29/2013 06:09 AM, António M. Rodrigues wrote:
>
>> Hi all,
>>
>> I have a problem with quotes which I can't find a solution.
>>
>> Inside a query string I have another query string; I used for the later
>> double quotes, but it is still complaining
>>
>> The problem is with the function pgr_drivingdistance (from pgrouting
>> extension).
>>
>> The code is the following:
>>
>> ------------------------------**-----------------------
>> DO $$
>> DECLARE
>>      i integer;
>> BEGIN
>> FOR i IN (select nn from numeros)
>> LOOP
>> EXECUTE
>> 'create table contagio' || i || ' as
>> SELECT *
>>   FROM pgr_drivingdistance("
>>        SELECT gid AS id,
>>            source,
>>            target,
>>            tempo::float8 AS cost
>>        FROM lisboa",
>>        ' || i || ' ,
>>        30,
>>        false,
>>        false)
>> ';
>> END LOOP;
>> END;
>> $$;
>>
>
>
>> ERROR:  column "
>>        SELECT gid AS id,
>>            source,
>>            target,
>>    " does not exist
>> LINE 3:  FROM pgr_drivingdistance("
>>                                    ^
>> QUERY:  create table contagio18 as
>> SELECT *
>>   FROM pgr_drivingdistance("
>>        SELECT gid AS id,
>>            source,
>>            target,
>>            tempo::float8 AS cost
>>        FROM lisboa",
>>        18 ,
>>        30,
>>        false,
>>        false)
>>
>
>
>> I suspect the solution is probably simple; yet, I can't get i
>>
>
> I think you need two single quotes around the embedded sql string. What is
> happening is that Postgres is seeing the sql string as an identifier and is
> looking for a column of that name.
>
> By way of example:
>
> DO $$
>
>
> BEGIN
> RAISE NOTICE 'test is "good"';
> END;
> $$
> language plpgsql;
> NOTICE:  test is "good"
>
> DO
>
>
> DO $$
>
>
>
>
> BEGIN
>
> RAISE NOTICE 'test is ''good''';
>
> END;
>
> $$
>
> language plpgsql;
>
> NOTICE:  test is 'good'
>
> DO
>
>
>  Thanks in advance for any help.
>>
>> António
>>
>
>
> --
> Adrian Klaver
> adrian.kla...@gmail.com
>

Reply via email to