Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / не работает функция / 16 сообщений из 16, страница 1 из 1
15.09.2015, 10:27
    #39051549
wild888
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
добрый день) переехал с mssql на postgresql.имеется приложение работающее с бд, столкнулся с функцией, которую вроде перепилил под pg.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE OR REPLACE FUNCTION proces(
    _login character,
    _pass character)
  RETURNS integer AS
$BODY$
DECLARE _id integer;
BEGIN
        SELECT  _id=id
        FROM    _user
        WHERE   login=_login and pass=_pass;

        RETURN _id;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE SECURITY DEFINER
  COST 100;


вроде бы всё верно.
далее из своего приложения через параметры делаю запрос на авторизацию..и получаю сообщение об ошибке 42р01 "отношение _user не существует" куда копать?где я что упустил???
...
Рейтинг: 0 / 0
15.09.2015, 10:39
    #39051571
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
wild888,

вообве то асайнмент должен выглядеть так (по моему):
Код: sql
1.
2.
3.
_id := id
        FROM    _user
        WHERE   login=_login and pass=_pass;


но у вас ругается что не находит таблицу _user, тому может быть несколько причин. наиболее вероятной считаю, что таблица создана в схеме, которая не прописана в search_path, посему, её попросту ненаходит. чтоб проверить эту гипотезу сделайте
Код: sql
1.
SELECT current_setting('search_path');


и посмотрите есть ли схема в возврощяемом списке.
...
Рейтинг: 0 / 0
15.09.2015, 10:48
    #39051588
wild888
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
Lonepsycho, да "$user,public"
...
Рейтинг: 0 / 0
15.09.2015, 10:52
    #39051595
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
wild888,

а таблица в какой схеме находится?
...
Рейтинг: 0 / 0
15.09.2015, 10:58
    #39051599
wild888
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
Lonepsycho, посмотрел в свойствах таблицы - схема:public
...
Рейтинг: 0 / 0
15.09.2015, 10:59
    #39051601
tadmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
into!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION proces(
    _login character,
    _pass character)
  RETURNS integer AS
$BODY$
DECLARE _id integer;
BEGIN
  -- SELECT  _id=id
 SELECT  id into _id
        FROM    _user
        WHERE   login=_login and pass=_pass;

        RETURN _id;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE SECURITY DEFINER
  COST 100;



далее из своего приложения через параметры делаю запрос на авторизацию..и получаю сообщение об ошибке 42р01 "отношение _user не существует" куда копать?где я что упустил???[/quot]
...
Рейтинг: 0 / 0
15.09.2015, 11:03
    #39051607
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
tadmin,

можно и с INTO, мне более нравится

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE OR REPLACE FUNCTION proces(
    _login character,
    _pass character)
  RETURNS integer AS
$BODY$
DECLARE _id integer;
BEGIN
   _id:=id
   FROM    _user
   WHERE   login=_login and pass=_pass;

   RETURN _id;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE SECURITY DEFINER
  COST 100;



но вернёмся к главному. можете запустить запрос?
Код: sql
1.
SELECT nsp.nspname, c.relname FROM pg_class AS c INNER JOIN pg_namespace AS nsp ON c.relnamespace = nsp.oid AND lower(c.relname) = '_user';
...
Рейтинг: 0 / 0
15.09.2015, 11:04
    #39051609
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
tadmin,

поправка:
Код: sql
1.
SELECT nsp.nspname, concat('"', c.relname, '"') AS relname FROM pg_class AS c INNER JOIN pg_namespace AS nsp ON c.relnamespace = nsp.oid AND lower(c.relname) = '_user';
...
Рейтинг: 0 / 0
15.09.2015, 11:05
    #39051611
wild888
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
Lonepsycho, public " user"
...
Рейтинг: 0 / 0
15.09.2015, 11:07
    #39051612
wild888
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
tadmin, попробовал с into, не видит всё равно таблицу
...
Рейтинг: 0 / 0
15.09.2015, 11:08
    #39051613
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
wild888,

вот вам и ответ. имя таблицы не совпадает с запрашиваемой. или переименовывать саму таблицу, или везде где обращяетесь к ней обращятся с двойными кавычками и пробелом в переди, т.е. SELECT * FROM " user"...
...
Рейтинг: 0 / 0
15.09.2015, 11:14
    #39051617
wild888
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
Lonepsycho, не помогает, и переименовал, ошибка та же(
...
Рейтинг: 0 / 0
15.09.2015, 11:19
    #39051622
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
wild888,

чюдес не бывает. посмотрите ещё раз имя таблицы возвращяемое запросом. попробуйте явно указать схему, т.е. public.user. а может вы работаете с двумя разными базами и запросы посылаете не в ту?
...
Рейтинг: 0 / 0
15.09.2015, 11:26
    #39051627
wild888
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
Lonepsycho, по поводу чудес полностью согласен))) указал явно и всё поехало!!!благодарю)))
...
Рейтинг: 0 / 0
15.09.2015, 11:31
    #39051635
wild888
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
tadmin, и into тоже пригодилось, а то не видел данных для результата)))))
...
Рейтинг: 0 / 0
15.09.2015, 11:45
    #39051646
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает функция
wild888,

значит проблема в search_path у юзера используювего эту функцию.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / не работает функция / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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