Längere Strings basteln

Hi,
ich versuche einen längeren String zu basteln. Doch leider wird er immer abgeschnitten. Die Variable ist vom Typ character varying.
Der Code lautet:
length11 = “Select cost from shortest_path(‘SELECT gid as id, source::int4, target::int4, length::double precision as cost FROM ways’, “||startenGID||”,”||endenGID||","||directed||","||has_reverse_cost||")";

Als Hinweis erscheint immer:
HINWEIS: Bezeichner »Select cost from shortest_path(‘SELECT gid as id, source::int4, target::int4, length::double precision as cost FROM ways’, « wird auf »Select cost from shortest_path('SELECT gid as id, source::int4,« gekürzt.

Vielen Dank für Antworten im Voraus :slight_smile:

Gruß

Rene

Zu wenig Kontext.

Du solltest beachten, daß ein " benutzt wird, um z.B. Spaltenbezeichner zu benennen. Lautet Deine Spalte wirklich "Select cost from shortest_path(‘SELECT gid as id, source::int4, target::int4, length::double precision as cost FROM ways’, "?

Andreas

Hi!
Danke für die schnelle Antwort.
Ich möchte eigentlich die Zeile :
“Select cost from shortest_path(‘SELECT gid as id, source::int4, target::int4, length::double precision as cost FROM ways’, “||startenGID||”,”||endenGID||","||directed||","|| has_reverse_cost||")";
als String in die Variable length11 packen und dann anschließend mittels :
EXECUTE length11 INTO length1
ausführen.
Dabei soll die PostGIS Methode shortest_path aufgerufen werden, welche den String Select gid as id, source::… übergeben bekommt (+ zusätzlich noch die Variablen startenGID, endenGID…).
Aber ich weiß einfach nicht, wie ich das als String deklarieren kann, ohne dass das Hochkomma vor dem zweiten Select als Sonderzeichen interpretiert wird.
Ich hoffe, ich habe mich verständlich genug ausgedrück (war etwas schwierig zu erklären :astonished: ).
Gruß

René

select ‘test mit ' und "’;

Andreas

Hi,
danke für deine bisherigen Antworten. Aber ich bekomm das mit dem Abschneiden von zu langen Strings einfach nicht in den Griff. Den unten aufgeführten String (direkt hinter Hinweis: Bezeichner…) speichere ich immer in eine Variable vom Typ text, da diese ja ohne Längenlimitierung arbeiten.
Aber trotzdem erscheint folgender Hinweis. Was mache ich bloß falsch? Ist es sehr offensichtlich und ich sehe es einfach nur nicht??? :confused: :wink:

HINWEIS: Bezeichner »Select sum(cost) from shortest_path('SELECT gid as id, source::int4, target::int4, length::double precision as cost FROM « wird auf »Select sum(cost) from shortest_path('SELECT gid as id, source::« gekürzt

Gruß René

Steht doch da, was Du falsch machst: Du erzeugst einen Bezeichner, und keine Variable mit diesem Inhalt.

test=*# select E'Select sum(cost) from shortest_path(\'SELECT gid as id, source::int4, target::int4, length::double precision as cost FROM \'';
                                                          ?column?
----------------------------------------------------------------------------------------------------------------------------
 Select sum(cost) from shortest_path('SELECT gid as id, source::int4, target::int4, length::double precision as cost FROM '
(1 row)

Time: 0.146 ms
test=*# select 1 as  "Select sum(cost) from shortest_path(\'SELECT gid as id, source::int4, target::int4, length::double precision as cost FROM \''";
HINWEIS:  Bezeichner »Select sum(cost) from shortest_path(\'SELECT gid as id, source::int4, target::int4, length::double precision as cost FROM \''« wird auf »Select sum(cost) from shortest_path(\'SELECT gid as id, source:« gekürzt
 Select sum(cost) from shortest_path(\'SELECT gid as id, source:
-----------------------------------------------------------------
                                                               1
(1 row)

Time: 0.135 ms

Andreas