Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / про хранимые процедуры.... помогите пжалса.... / 12 сообщений из 12, страница 1 из 1
25.04.2005, 12:26
    #33033033
GreyVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
никак не врублюсь как из хранимки вернуть набор данных :(
подскажите плиз. чёто не выходит... каменный цветок :(
...
Рейтинг: 0 / 0
25.04.2005, 15:15
    #33033599
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
... RETURNS SET OF имя_таблицы\свой_тип ...
...
Рейтинг: 0 / 0
25.04.2005, 16:28
    #33033841
GreyVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
mwolf... RETURNS SET OF имя_таблицы\свой_тип ...
а как это сделать если я пользуюсь EMS PostgreSQL Manager ?
как-то тут не получается так состряпать хранимку... ткните плиз носом... запутался в конец :(
...
Рейтинг: 0 / 0
25.04.2005, 16:31
    #33033846
GreyVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
CREATE OR REPLACE FUNCTION "public"."tst_func1" () RETURNS SETOF opaque AS'
RETURN (select id,name,crdate,comment,fio from clients);
'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

вот так получается сделать хранимку... но это не прокатывает :(
...
Рейтинг: 0 / 0
25.04.2005, 16:38
    #33033875
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
Так, стоп, мужчина, объясните чего вы хотите.
вот так получается сделать хранимку... но это не прокатывает

Давайте по порядку, что вам нужно, что вы делаете, что не получается и что при этом вылазит. Слова не прокатывает мне лично ни о чём не говорят.
...
Рейтинг: 0 / 0
25.04.2005, 16:49
    #33033925
GreyVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
надо создать средствами вышеупомянутго инструмента хранимую процедуру, которая бы возвращала выборку данных
до недавнего времени работал с MSSQL и делал такое легко, теперь встала задача переползти потихоньку на postgreSQL...
процедуру пока делаю с простым select внутри, просто ради поучиться...
...
Рейтинг: 0 / 0
25.04.2005, 17:24
    #33034036
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
GreyVSCREATE OR REPLACE FUNCTION "public"."tst_func1" () RETURNS SETOF opaque - этто непрально - это для триггера AS'
select id,name,crdate,comment,fio from clients;
'LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;


а в plpgsql SETOF возвращается позаписно с помощью RETURN NEXT/

ЗЫ воспользуйтесь поиском по RETURNS SETOF. trigger и RETURN NEXT
...
Рейтинг: 0 / 0
25.04.2005, 17:26
    #33034037
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
Значится так.
Теория:
Как ты уже догадался Постгресс несколько отличается от МС-а. Приблизительно как С++ от Паскаля. В Постгресе надо проводить явную типизацию и описания в отличие от МС-а, который хавает многое по умолчанию.

Живой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE FUNCTION get_data(bigint, bigint, character varying, bigint) RETURNS SETOF result_view
    AS '
SELECT v.*
FROM
  result_view v;
WHERE
  много много условий
;
'
    LANGUAGE sql;
Акцентирую внимание на "LANGUAGE sql".

Постгрес Манагер (он русифицирован хотя бы?):
До окошка создания ф-ци я надеюсь ты добрался. Чтобы выбрать возвращаемый тип, тебя должна заинтересовать вторая строка параметров в этом окне. Вначале выбери чекбокс "Набор", иначе он будет думать, что будет возвращаться скаляр или одна запись. Потом в выпадающем списке выбери тип возвращаемой записи. Там вначале идут либо простые типы и массивы, а чуть ниже перечисляются типы записей - имена таблиц и предопределённых тобой типов.
Собсно всё.
В закладке DDL можно посмотреть на синтаксис ф-ции.
...
Рейтинг: 0 / 0
25.04.2005, 17:47
    #33034093
GreyVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
CREATE OR REPLACE FUNCTION "public"."tst_func4" () RETURNS SETOF "public"."clients" AS'
select * from clients;
'LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY DEFINER;

создал процедуру, только на вот это:
select * from tst_func4();
говорит:
ERROR: query-specified return row and actual function return row do not match

где не так сделал?
...
Рейтинг: 0 / 0
27.04.2005, 14:16
    #33038289
GreyVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
вот сделал хранимку:
CREATE OR REPLACE FUNCTION "public"."tst_funct2" () RETURNS date AS'
declare
datecur date;
dateold date;
begin
SELECT INTO dateold date_trunc(''month'', timestamp ''27.04.2005'');
dateold = date dateold - integer ''1'';
SELECT INTO dateold date_trunc(''month'', timestamp dateold);
return dateold;
end;
'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

вот так вызываю:
select tst_funct2();

вот такое получаю:
ERROR: syntax error at or near "$1" at character 15

подскажите в чём дело? ну сломал уже голову.... ведь всё элементарно! :(
...
Рейтинг: 0 / 0
27.04.2005, 14:44
    #33038401
GreyVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
опять разобрался :) звиняйте за сумбур...
...
Рейтинг: 0 / 0
27.04.2005, 14:46
    #33038414
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про хранимые процедуры.... помогите пжалса....
Ну если тебе станет легче, то у меня это тоже не работает
А так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE FUNCTION "public"."tst_funct2" () RETURNS date AS'
declare
  datecur date;
  dateold date;
begin
  SELECT INTO dateold date_trunc(''month'', ''27.04.2005''::timestamp );
  dateold = dateold - 1;
  SELECT INTO dateold date_trunc(''month'', dateold::timestamp );
  return dateold;
end;
'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
?
Я правда так и не понял, что это ф-ция делает.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / про хранимые процедуры.... помогите пжалса.... / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]