powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / не работает функция
16 сообщений из 16, страница 1 из 1
не работает функция
    #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
не работает функция
    #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
не работает функция
    #39051588
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho, да "$user,public"
...
Рейтинг: 0 / 0
не работает функция
    #39051595
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wild888,

а таблица в какой схеме находится?
...
Рейтинг: 0 / 0
не работает функция
    #39051599
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho, посмотрел в свойствах таблицы - схема:public
...
Рейтинг: 0 / 0
не работает функция
    #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
не работает функция
    #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
не работает функция
    #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
не работает функция
    #39051611
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho, public " user"
...
Рейтинг: 0 / 0
не работает функция
    #39051612
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tadmin, попробовал с into, не видит всё равно таблицу
...
Рейтинг: 0 / 0
не работает функция
    #39051613
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wild888,

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

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

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


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