Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > шаблоны строк


Автор: pythonwin 22.4.2009, 08:22
Всем привет!
подскажите, пожалуйста, как можно организовать в psql или plpgsql шаблоны строк и как сделать чтобы в текст передавались параметры заменяя значения?
например в таблице есть текстовое поле и в определенной запирси этой таблицы в этом поле хранится текст в котором есть перечисление параметров и если этот текст и параметры передать в какую-то функцию, то она вернёт строку, в которой названия или перечисление параметров заменится на их значения. в python например это делается так:
Код

st = "my text = %(my_text)s"
s1 = st%{'my_text':'123_098'}

или
Код

st = "my text = %s"
s1 = st%'123_098'

Автор: sir_nuf_nuf 22.4.2009, 10:10
Вы сначала придумайте как такую конструкцию в рамках SQL использовать ?
Как  (в виде чего) передавать переменное количество переменных.

Скорее всего - встроенной функции нет. (и это правильно)

Но если вам оч. надо - можно дописать свою. Раз вы фанат питона - то на питоне =)

http://www.postgresql.org/docs/8.2/interactive/plpython.html

Автор: pythonwin 22.4.2009, 10:18
Цитата(sir_nuf_nuf @  22.4.2009,  13:10 Найти цитируемый пост)
Но если вам оч. надо - можно дописать свою. Раз вы фанат питона - то на питоне =)

написал на plpython
Код

 CREATE PROCEDURAL LANGUAGE 'plpythonu'
  HANDLER plpython_call_handler;

CREATE OR REPLACE FUNCTION my1(int) RETURNS text
    AS $BODY$
    rv = plpy.execute("SELECT sql_code FROM queries WHERE name = 'select1'")
    sql_query = rv[0]['sql_code']%{'var1':args[0]}
    rv = plpy.execute(sql_query)
    return dict(rv[0]])
    $BODY$
    LANGUAGE plpythonu;
select my1(1);

psql 8.1.15
OS = debian etch/lenny

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)