powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перенос базы MSSQL на PostgreSQL. Перевод хранимых процедур.
6 сообщений из 6, страница 1 из 1
Перенос базы MSSQL на PostgreSQL. Перевод хранимых процедур.
    #35413315
Денис Ильин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
сразу скажу, я постргесмен весьма юный.
есть желание перенести базу на PostgreSQL с MSSQL2005.

в MSSQL мы не обращаемся из клиента к таблицам непосредственно, а работаем посредством хранимых процедур. Такой подход оправдал себя на 100%: разделение прав, предкомпиляция, разделение уровней разработки и т.п.

В MSSQL работаем через ADO
примерно так: #import "msado15.dll"
далее логин, запросы SQL - всё это работает.
просто заполняем структурку _CommandPtr и обращаемся к ADO.
до этого момента всё в порядке.

далее возникает следующий затык.
почему то не удаётся возвращать recordset-ы из хранимок. У нас стандартная хранимая процедура в MSSQL выглядит так:

create procedure getFoo( @param1 int, @param2 int ) as
begin
select * from [footable] where [id1] = @param1 and [id2] = @param2
end


при вызове этой процедуры из ADO мы заполняем рекордсет и "гуляем" по нему (MoveFirst(), MoveNext() ).
А вот как написать процедуру на PostgreSQL, что бы со строны клиента можно было бы подцепить рекордсет. output параметры мы практически не используем, по историческим причинам, да и таблицы таким образом передавать нельзя (кажется, в mssql2008 уже можно, но речь не об этом)

спасибо за внимание.
...
Рейтинг: 0 / 0
Перенос базы MSSQL на PostgreSQL. Перевод хранимых процедур.
    #35414178
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Язык SQL:
Код: plaintext
1.
2.
3.
4.
5.
6.
create function getfoo( param1 int, param2 int )
returns setof footable
language sql
as $$
  select * from "footable" where "id1" = $ 1  and "id2" = $ 2 ;
$$;

Язык plpgsql
В версии до 8.3:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create function getfoo( param1 int, param2 int )
returns setof footable
language plpgsql
as $$
declare
  r footable;
begin
  for r in select * from "footable" where "id1" = param1 and "id2" = param2
  loop
    return next r;
  end loop;
end;
$$

В версии 8.3:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create function getfoo( param1 int, param2 int )
returns setof footable
language plpgsql
as $$
begin
  return query select * from "footable" where "id1" = param1 and "id2" = param2;
end;
$$
...
Рейтинг: 0 / 0
Перенос базы MSSQL на PostgreSQL. Перевод хранимых процедур.
    #35414209
loctyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если нужно вернуть только табличку footable
если при возврате использовать различные объединения,
то придется описывать тип того что будете возвращать
:(
или
возвращать курсор а потом его выбирать
...
Рейтинг: 0 / 0
Перенос базы MSSQL на PostgreSQL. Перевод хранимых процедур.
    #35414218
Денис Ильин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо большое за ответ
я тут начал экспериментировать с возвращаемым recordset, пока что не очень успешно.
если сработает, на рекордсеты забью.

авторЕсли нужно вернуть только табличку footable
да, в принципе, 99% вариантов использования это покрывает, так что всё в порядке.
...
Рейтинг: 0 / 0
Перенос базы MSSQL на PostgreSQL. Перевод хранимых процедур.
    #35414276
Денис Ильин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ура! оно работает
да. радость, правда, была чуть преждевременной, т.к. частенько имеем возврат из временных таблиц...
ну да ладно, это уже детали, будем через курсор возвращать.
...
Рейтинг: 0 / 0
Перенос базы MSSQL на PostgreSQL. Перевод хранимых процедур.
    #35414301
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Ильин
да. радость, правда, была чуть преждевременной, т.к. частенько имеем возврат из временных таблиц...
Для временных таблиц точно так же должно работать.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перенос базы MSSQL на PostgreSQL. Перевод хранимых процедур.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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