Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Проблема с написанием простой функции / 25 сообщений из 64, страница 1 из 3
18.04.2013, 18:14
    #38231468
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
Необходимо написать простейшую функцию возвращающую id элемента в таблице по имени name

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE OR REPLACE FUNCTION table1_get_id_by_name (
  name varchar
)
RETURNS integer AS
$body$
BEGIN
	SELECT t.id FROM table1 t WHERE t.name = table1_get_id_by_name.name;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;



при выполнении запроса

Код: plsql
1.
select table1_get_id_by_name ('lalala')



вылетает:
ОШИБКА: в запросе нет назначения для данных результата
HINT: Если вам нужно отбросить результаты SELECT, используйте PERFORM.
CONTEXT: функция PL/pgSQL table1_get_id_by_name(character varying), строка 3, оператор SQL-оператор

Непойму в чем тут проблема?
Попутно вопрос: как сократить написание входных параметров при конфликте имен в запросе, а то <имя функции>.<имя параметра> получается очень длинно и нечитаемо при длинных названиях функций (именование через $n не предлагать - нечитаемо)
...
Рейтинг: 0 / 0
18.04.2013, 18:29
    #38231493
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
sp,

очень хорошая документация в пг

http://www.postgresql.org/docs/current/static/
...
Рейтинг: 0 / 0
18.04.2013, 18:32
    #38231501
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
Misha Tyurinsp,

очень хорошая документация в пг
http://www.postgresql.org/docs/current/static/

очень хорошая документация -согласен - прочитал почти всю
а конструктив в вашем ответе где?
...
Рейтинг: 0 / 0
18.04.2013, 18:40
    #38231512
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
авторНеобходимо написать простейшую функцию возвращающую id элемента

вы считаете, что в хорошей документации нет примеров и объяснений для таких функций?

читать еше
...
Рейтинг: 0 / 0
18.04.2013, 18:42
    #38231515
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
Misha TyurinавторНеобходимо написать простейшую функцию возвращающую id элемента

вы считаете, что в хорошей документации нет примеров и объяснений для таких функций?
читать еше

вы считаете назначение форума - посылать подальше?
посылайте...)
...
Рейтинг: 0 / 0
18.04.2013, 18:44
    #38231517
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
...
Рейтинг: 0 / 0
18.04.2013, 18:44
    #38231518
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
Реализация вида

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION table1_get_id_by_name (
  name varchar
)
RETURNS integer AS
$body$
DECLARE
  ret integer;
BEGIN
	SELECT t.id FROM table1 t WHERE t.name = table1_get_id_by_name.name into ret;
        RETURN ret;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;



работает, но мне кажется что она избыточна (в доке в простых примерах пишут просто SELECT x+y;)
...
Рейтинг: 0 / 0
18.04.2013, 18:44
    #38231519
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
Misha Tyurin,

спасибо, но пожалуйста где-нить в другом месте, назначение форума - помогать друг другу, а вы функции перепутали
...
Рейтинг: 0 / 0
18.04.2013, 18:51
    #38231525
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
sp,

я вам помогаю всеми силами
...
Рейтинг: 0 / 0
18.04.2013, 18:53
    #38231526
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
sp,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE OR REPLACE FUNCTION table1_get_id_by_name (
  name varchar
)
RETURNS integer AS
$body$
BEGIN
	RETURN t.id FROM table1 t WHERE t.name = $1;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;
...
Рейтинг: 0 / 0
18.04.2013, 19:07
    #38231545
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
Lonepsycho,

Спасибо, такой синтаксис в мануале не видел!
...
Рейтинг: 0 / 0
18.04.2013, 19:07
    #38231546
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
Misha Tyurin,

и чем же?
...
Рейтинг: 0 / 0
18.04.2013, 19:10
    #38231552
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
Lonepsycho,

а по поводу коллизии имен, что можете посоветовать? (использование $n считаю неинформативным при большом количестве входных параметров)
...
Рейтинг: 0 / 0
18.04.2013, 19:16
    #38231562
/\/\/\/\/\/\/\/\/\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
sp,

Способствует повышению Ваших навыков самостоятельной работы. Хотя Вы всеми силами упираетесь.

То, что Вы не смогли прочитать - не значит, что этого не написано .

А на случай "не видал" Вам советовали прочитать еще раз.

Позвольте угадать Ваш следующий вопрос: "Как мне выполнить динамический SQL".
...
Рейтинг: 0 / 0
18.04.2013, 19:22
    #38231573
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
/\/\/\/\/\/\/\/\/\sp,
Способствует повышению Ваших навыков самостоятельной работы. Хотя Вы всеми силами упираетесь.

давайте вы не будете изображать тут учителя :)

[quot /\/\/\/\/\/\/\/\/\]
То, что Вы не смогли прочитать - не значит, что этого не написано .

то что вы смогли ссылку кинуть не означает что там написано что expression = результат запроса!

/\/\/\/\/\/\/\/\/\А на случай "не видал" Вам советовали прочитать еще раз.
Позвольте угадать Ваш следующий вопрос: "Как мне выполнить динамический SQL".

Позвольте вам этого не позволить! :) а то вы такого нафантазируете без меня...)
...
Рейтинг: 0 / 0
18.04.2013, 19:27
    #38231580
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
/\/\/\/\/\/\/\/\/\,

в приличнух публичных заведениях принято что expression - это не одно и то же что и sql statement,
но в pg похоже что expression - это в том числе и sql statement, что вводит людей переходящих с других систем в недоумение
...
Рейтинг: 0 / 0
18.04.2013, 19:41
    #38231592
а чё
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
sp/\/\/\/\/\/\/\/\/\,

в приличнух публичных заведениях принято что expression - это не одно и то же что и sql statement,
но в pg похоже что expression - это в том числе и sql statement, что вводит людей переходящих с других систем в недоумениеоставайтесь на публичных ой приличных
вас за ноги вроде не тянут

ну и попробуйте ещё язык поменять вот тут
Код: plsql
1.
2.
3.
...
LANGUAGE 'sql'
...


- узнаете много нового
...
Рейтинг: 0 / 0
18.04.2013, 19:47
    #38231598
Ales Protiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
spто что вы смогли ссылку кинуть не означает что там написано что expression = результат запроса!


написано :P
http://www.postgresql.org/docs/9.2/static/plpgsql-expressions.html
...
Рейтинг: 0 / 0
18.04.2013, 20:04
    #38231616
/\/\/\/\/\/\/\/\/\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
sp/\/\/\/\/\/\/\/\/\,

в приличнух публичных заведениях принято что expression - это не одно и то же что и sql statement,
но в pg похоже что expression - это в том числе и sql statement, что вводит людей переходящих с других систем в недоумение

Вот в то самое приличное публичное заведение и обращайтесь.

Нет. Подобное поведение Postgres вводит только тех, кто не ознакомился с документацией. Ну, или людей с альтернативным анатомическим строением которые начинают ознакомление с редкоиспользуемых хитромудрых фич вместо основ.
...
Рейтинг: 0 / 0
18.04.2013, 20:07
    #38231622
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
Ales Protivspто что вы смогли ссылку кинуть не означает что там написано что expression = результат запроса!


написано :P
http://www.postgresql.org/docs/9.2/static/plpgsql-expressions.html

покажите в каком абзаце!?
...
Рейтинг: 0 / 0
18.04.2013, 20:10
    #38231624
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
/\/\/\/\/\/\/\/\/\sp/\/\/\/\/\/\/\/\/\,

в приличнух публичных заведениях принято что expression - это не одно и то же что и sql statement,
но в pg похоже что expression - это в том числе и sql statement, что вводит людей переходящих с других систем в недоумение

Вот в то самое приличное публичное заведение и обращайтесь.

Нет. Подобное поведение Postgres вводит только тех, кто не ознакомился с документацией. Ну, или людей с альтернативным анатомическим строением которые начинают ознакомление с редкоиспользуемых хитромудрых фич вместо основ.

По поводу ваших фантазий на тему что ктото чтото не читал - предъявите аргументы в виде конкретного абзаца в документации!

"редкоиспользуемых хитромудрых фич" - было взято у одного из разработчиков PG завсегдатая данного форума!) не надо приписывать мне авторство - я еще не настолько знаком с тонкостями PG
...
Рейтинг: 0 / 0
18.04.2013, 20:11
    #38231627
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
/\/\/\/\/\/\/\/\/\,

и какой же злопамятный!!!
...
Рейтинг: 0 / 0
18.04.2013, 20:16
    #38231630
/\/\/\/\/\/\/\/\/\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
sp
"редкоиспользуемых хитромудрых фич" - было взято у одного из разработчиков PG завсегдатая данного форума!) не надо приписывать мне авторство - я еще не настолько знаком с тонкостями PG

О! Теперь Вы признаетесь в том, что украли чужой код. А признаетесь только когда в очередной раз поймали на слове.

Я читал документацию. Даже несколько раз. Она мне нравится.
Но не настолько, чтобы читать избранные участи в слух для неспособных читать ее самостоятельно. Хотя все решаемо -- назовите цену вопроса.
...
Рейтинг: 0 / 0
18.04.2013, 20:19
    #38231631
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
/\/\/\/\/\/\/\/\/\sp"редкоиспользуемых хитромудрых фич" - было взято у одного из разработчиков PG завсегдатая данного форума!) не надо приписывать мне авторство - я еще не настолько знаком с тонкостями PG

О! Теперь Вы признаетесь в том, что украли чужой код. А признаетесь только когда в очередной раз поймали на слове.

Я читал документацию. Даже несколько раз. Она мне нравится.
Но не настолько, чтобы читать избранные участи в слух для неспособных читать ее самостоятельно. Хотя все решаемо -- назовите цену вопроса.

Слушайте, да у вас же болезненное восприятие мира и буйная фантазия!
С каких пор цитирования является воровством?????

Таки аргументов нет - да вы батенька голословно высокомерно тут губы надуваете!
...
Рейтинг: 0 / 0
18.04.2013, 20:21
    #38231632
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с написанием простой функции
/\/\/\/\/\/\/\/\/\,

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


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