Re: Quotes in dynamic sql

Поиск
Список
Период
Сортировка
От A E
Тема Re: Quotes in dynamic sql
Дата
Msg-id 20031230201159.74301.qmail@web12107.mail.yahoo.com
обсуждение исходный текст
Ответ на Re: Quotes in dynamic sql  ("John Sidney-Woollett" <johnsw@wardbrook.com>)
Список pgsql-general
I tried doubling the quotes because I am running a pl/pgsql procedure, did not work. Full code context:
 
begin
select into allowed secverf(username, talias);
if allowed = 0 then
 RAISE NOTICE ''User not authorized to perform retrieve.'', allowed;
 RETURN null;
else
 select into realname tablename from applicationaliases where aliasname like ''%''|| trim(talias) ||''%'';
 if length(crmid) = 0 then
  qry := ''SELECT * from ''|| trim(realname);
  FOR objectdefinition IN EXECUTE qry LOOP
   RETURN NEXT objectdefinition;
  END LOOP;
 else
  qry := ''SELECT * from ''|| trim(realname) ||'' where crmid like ''%''|| trim(crmid) ||''%'''';
  FOR objectdefinition IN EXECUTE qry LOOP
   RETURN NEXT objectdefinition;
  END LOOP;
 end if;
end if;
RETURN null;
end;'
LANGUAGE 'plpgsql' VOLATILE;

John Sidney-Woollett <johnsw@wardbrook.com> wrote:
Shouldn't it be:

qry := 'SELECT * from '|| trim(realname) ||' where crmid like ''%'||
trim(crmid) ||'%''';

The contents of qry should be:

'SELECT * from blahblah where crmid like '%crmid%'

Your errors (I think) are here:


qry := ''SELECT * from ''|| trim(realname) ||'' where crmid like %''||
^1 ^1 ^1 ^2

trim(crmid) ||''%'';
^1 ^3

^1 = only need a single quote
^2 = the quotes are after the % when they should be before
^3 = you have a missing closing single quote

Of course, if the above is in a pl/sql procedure, then you'll need to
double up all the quotes (I think).

Hope that helps.

John Sidney-Woollett

A E said:
> Hi,
>
> I am trying to execute dynamic sql but I can't seem to get the qoutes
> right.
>
> My code is
>
> qry := ''SELECT * from ''|| trim(realname) ||'' where crmid like %''||
> trim(crmid) ||''%'';
>
> Can anyone help?
>
> Alex
>


---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

В списке pgsql-general по дате отправления:

Предыдущее
От: "John Sidney-Woollett"
Дата:
Сообщение: Re: Quotes in dynamic sql
Следующее
От: Tom Lane
Дата:
Сообщение: Re: 'like' refuses to use an index???