Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / работа с курсорами из ХП в C# / 7 сообщений из 7, страница 1 из 1
05.08.2007, 20:41
    #34706456
Meraskur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с курсорами из ХП в C#
Есть ХП
Код: plaintext
CREATE OR REPLACE FUNCTION GetMapBlock(text,int2) RETURNS SETOF refcursor AS $$
...
Пытаюсь использовать такую конструкцию в С#
Код: plaintext
1.
2.
3.
NpgsqlCommand commandMultPolygon = new NpgsqlCommand("select  getmapblock('Hello'::text,3::int2)", connMap);
object ooo= commandMultPolygon.ExecuteScalar();
commandMultPolygon.CommandText = "fetch forward 700 in '"+ooo.ToString()+"'";
dr = commandMultPolygon.ExecuteReader();
Выдает ошибку syntax error at or near \"'<unnamed portal 2>'\""
Хотя в примерах есть :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE FUNCTION reffunc2() RETURNS refcursor AS ’
DECLARE
ref refcursor;
BEGIN
OPEN ref FOR SELECT col FROM test;
RETURN ref;
END;
’ LANGUAGE plpgsql;
BEGIN;
SELECT reffunc2();
reffunc2
--------------------
<unnamed cursor  1 >
( 1  row)
FETCH ALL IN "<unnamed cursor 1>";
COMMIT;
Как пользоваться курсорами ?
...
Рейтинг: 0 / 0
06.08.2007, 11:46
    #34707222
ездун
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с курсорами из ХП в C#
а попробовать
Код: plaintext
select * from getmapblock('Hello'::text, 3 ::int2)
Получится?
...
Рейтинг: 0 / 0
09.08.2007, 19:07
    #34718276
Meraskur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с курсорами из ХП в C#
Это дало:
ERROR: syntax error at or near "GetMapBlockCur"
SQL state: 42601
Character: 11
...
Рейтинг: 0 / 0
10.08.2007, 09:08
    #34718815
Meraskur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с курсорами из ХП в C#
Здесь кто нибудь пользуется курсорами ? Работа с курсорами будет быстрее чем возврат recordа через RETURN NEXT в цикле?
...
Рейтинг: 0 / 0
10.08.2007, 11:00
    #34719125
ездун
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с курсорами из ХП в C#
смотря сколько данных ты хочешь получить. RETURN NEXT вначале готовит все в памяти сервера и потом все выдает за раз на клиента.
...
Рейтинг: 0 / 0
10.08.2007, 11:55
    #34719361
Meraskur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с курсорами из ХП в C#
размер до 5000 записей оба варианта отрабатывают за 2.7-2.8 сек, думаю проблема в самом запросе :
Код: plaintext
FOR rezult IN SELECT type, name, gm FROM (SELECT type, name, AsBinary(intersection(mblock,geom)) AS gm FROM mapsdata_areas14, spsubmaps, spmaps WHERE spmaps.zoom= 14  AND spsubmaps.idmap=spmaps.id AND mapsdata_areas14.atlas=spsubmaps.atlas) AS tgm  WHERE IsEmpty(gm)=false

Подскажите как можно ускорить эту конструкцию?
Индексы по atlas и geom есть.
...
Рейтинг: 0 / 0
10.08.2007, 13:12
    #34719696
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с курсорами из ХП в C#
Meraskurразмер до 5000 записей оба варианта отрабатывают за 2.7-2.8 сек, думаю проблема в самом запросе :
Код: plaintext
FOR rezult IN SELECT type, name, gm FROM (SELECT type, name, AsBinary(intersection(mblock,geom)) AS gm FROM mapsdata_areas14, spsubmaps, spmaps WHERE spmaps.zoom= 14  AND spsubmaps.idmap=spmaps.id AND mapsdata_areas14.atlas=spsubmaps.atlas) AS tgm  WHERE IsEmpty(gm)=false

Подскажите как можно ускорить эту конструкцию?
Индексы по atlas и geom есть.
по скрипту
Код: plaintext
1.
SELECT type, name, gm FROM (SELECT type, name, AsBinary(intersection(mblock,geom)) AS gm FROM mapsdata_areas14, spsubmaps, spmaps WHERE spmaps.zoom= 14  AND spsubmaps.idmap=spmaps.id AND mapsdata_areas14.atlas=spsubmaps.atlas) AS tgm  WHERE IsEmpty(gm)=false
для начала:
Код: plaintext
1.
2.
3.
EXPLAIN ANALYZE SELECT type, name, gm FROM (SELECT type, name, AsBinary(intersection(mblock,geom)) AS gm FROM mapsdata_areas14, spsubmaps, spmaps WHERE spmaps.zoom= 14  AND spsubmaps.idmap=spmaps.id AND mapsdata_areas14.atlas=spsubmaps.atlas) AS tgm  WHERE IsEmpty(gm)=false;
VACUUM FULL ANALYZE;
EXPLAIN ANALYZE SELECT type, name, gm FROM (SELECT type, name, AsBinary(intersection(mblock,geom)) AS gm FROM mapsdata_areas14, spsubmaps, spmaps WHERE spmaps.zoom= 14  AND spsubmaps.idmap=spmaps.id AND mapsdata_areas14.atlas=spsubmaps.atlas) AS tgm  WHERE IsEmpty(gm)=false;
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / работа с курсорами из ХП в C# / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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