Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
Ananasinka
1

Вручную написанная функция не работает

16.05.2010, 19:18. Показов 3658. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет,

я написала функцию, которая должна в имеющуюся таблицу cities добавлять строку данных при выполнении следующего условия: добавляемый объект (POINT) лежит целиком в пределах другого определенного объекта (MULTIPOLYGON) из другой таблицы (я использовала функцию WITHIN(geo,geo).
При этом если условие выполняется, при выполнении запроса выдается соответствующее уведомление.

Вот так выглядит это сейчас на данный момент:
PHP
1
2
3
4
5
6
7
8
9
10
11
CREATE OR REPLACE FUNCTION insertCity(cityname text, regionname text, location POINT)
    RETURNS VARCHAR AS $$
BEGIN
    IF (Within(location, region.geo)) THEN 
      INSERT INTO cities VALUES (cityname, regionname, location);
      RETURN 'The city ' || cityname || ' is put in';
    ELSE
      RETURN 'The city ' || cityname || ' is not put in';
    END IF;
END;
$$ LANGUAGE plpgsql;
При выполнении запроса в таком виде:
PHP
1
SELECT insertCity('Colomna', 'Moscow', PointFromText('POINT(12 9)', -1));
постоянно вылетает ошибка:
ERROR: function insertCity(unknown, unknown, geometry) does not exist
LINE 1: SELECT insertCity('Colomna', 'Moscow', PointFromT...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Почему параметры вдруг стали "unknown"?
В чем моя ошибка??

Заранее спасибо за ответы.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2010, 19:18
Ответы с готовыми решениями:

Ругается написанная функция
Выходит ошибка при выводе: Fatal error: Call to a member function mysql_fetch_assoc() on a...

Нужна функция sha256 написанная на чистом С с использованием OpenSSL
Нужна функция sha256 написанная на чистом С с использованием OpenSSL. Программирую на Ubuntu. В...

Игра, написанная в VS 2010 не работает в VS 2013
написал игру MS VS 2010 c#, открываю в 2013 не хочет работать, не подскажете в чем может быть...

Программа, написанная на Delphi XE8, не работает на WinXP
Я сделал программу на Delphi XE8 для моих знакомых! У меня Win 7 а у них xp и она на xp не...

3
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
17.05.2010, 17:30 2
1) Говорит, что функции нет. Она точно создана?
2) А разве можно внутри функции использовать insert, update, delete?
0
Ananasinka
17.05.2010, 21:16 3
1. После выполнения запроса CREATE OR REPLACE FUNCTION... она появляется в списке функций, значит она как минимум создается.

2. Судя по всему прочитанному мной ранее материалу на эту тему, можно. Как пример, функция, взятая с одного из электронных пособий:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE FUNCTION fuegeInGemeindeEin
      (pGkz INTEGER, pName VARCHAR) RETURNS VOID AS $$
    DECLARE
      minEinw INTEGER;
    BEGIN
      SELECT Min(einw) INTO minEinw FROM Gemeinden;
      INSERT INTO Gemeinden (gkz,name,einw)
                  VALUES (pGkz,pName,minEinw);
    END;
    $$ LANGUAGE plpgsql;
 
    SELECT fuegeInGemeindeEin (3361009,'Oyten');
Или еще один пример:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE OR REPLACE FUNCTION fuelleLogHS()
   RETURNS NUMERIC AS $$
DECLARE
  ds  RECORD;       -- aktuelle Antwort
  n   NUMERIC;      -- Zahl der Antworten
BEGIN
  n := 0;
  -- alle Antworten durchlaufen
  FOR ds IN SELECT * FROM Hochschulen LOOP
    INSERT INTO LogHochschulen
      VALUES (ds.num,ds.stud,current_timestamp);
    n := n+1;
  END LOOP;
  RETURN n;
END;
$$ LANGUAGE plpgsql;
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
18.05.2010, 02:04 4
Попробуте тип text поменять на varchar(xxx)
0
18.05.2010, 02:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2010, 02:04
Помогаю со студенческими работами здесь

Библиотека классов, написанная в VB.NET не работает в VBA
Хочу сделать библиотеку классов и использовать ее в VBA. Если в проекте DLL использую обычные...

[JSP] JS скрипт из файла не работает, а если вручную писать - работает
У меня в 4 файлах нужен один и тот же скрипт, я и его вынес в отдельный файл...

Не работает программа на Mathcad, написанная преподавателем? Учитель привел неверную программу
помогите разобраться, что именно здесь неверно Вот программа на Mathcad. Аппроксимация заданной...

С чего начать изучение, чтобы понять как работает написанная программа для МК
Пишу диплом, знакомый разрабатывает мне программу простенькую на обычном СИ , которая будет...

Почему программа написанная в MATLAB 5.2 не работает в MATLAB 7.5 ?
Здравствуйте уважаемые форумчане. У меня возникла проблема с программой, написанной в MATLAB 5.2....

Когда присваиваю IP-адрес вручную-не работает инет
Привет, помогите мне настроить сеть. Есть модем D-Link 2500U он и получает интернет, адрес модема...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru