powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Может ли функция вернуть два значения?
9 сообщений из 9, страница 1 из 1
Может ли функция вернуть два значения?
    #35102806
Leximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет! Ситуация такая: Есть таблица Сотрудников, в таблице Первичный ключ состоит из двух полей. Есть имя пользователя у сотрудника.
Необходимо в таблицу задачи, забить данные сотрудника по имени пользователя. Тоесть придётся написать функцию которая возвращает Ключ сотрудника. А так как ключ состоит из двух полей то видимо придётся писать две функции, или есть другие варианты?
...
Рейтинг: 0 / 0
Может ли функция вернуть два значения?
    #35102975
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeximusПривет! Ситуация такая: Есть таблица Сотрудников, в таблице Первичный ключ состоит из двух полей. Есть имя пользователя у сотрудника.
Необходимо в таблицу задачи, забить данные сотрудника по имени пользователя. Тоесть придётся написать функцию которая возвращает Ключ сотрудника. А так как ключ состоит из двух полей то видимо придётся писать две функции, или есть другие варианты?

а два выходных параметра?
или рекордсет?
...
Рейтинг: 0 / 0
Может ли функция вернуть два значения?
    #35103262
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh LeximusПривет! Ситуация такая: Есть таблица Сотрудников, в таблице Первичный ключ состоит из двух полей. Есть имя пользователя у сотрудника.
Необходимо в таблицу задачи, забить данные сотрудника по имени пользователя. Тоесть придётся написать функцию которая возвращает Ключ сотрудника. А так как ключ состоит из двух полей то видимо придётся писать две функции, или есть другие варианты?

а два выходных параметра?
или рекордсет?Создать свой тип (type) и возвращать переменную этого типа. А в нём хоть десяток полей.
...
Рейтинг: 0 / 0
Может ли функция вернуть два значения?
    #35103549
Leximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот например Таблицы:

Таблица: Employees
1.Id1
2.Id2
3.Name
4.User

Таблица: Tasks
1.Id
2.Date
3.Name
4.Emp_Id1
4.Emp_Id2

Получается функции надо создавать две, ну вот образно говоря:
Код: plaintext
1.
2.
3.
4.
function EmpId1(select Id1 from Employees where User=current_user)
function EmpId2(select Id2 from Employees where User=current_user)

INSERT INTO Tasks (Id, Date, Name, Emp_Id1, Emp_Id2) VALUES ( 1 , '22.11.2010', 'Тест', EmpId1, EmpId2)

И в результате получается что фактически два раза из одной и тойже таблицы будет выборка, хотя нужна одна и таже строка. В итоге потеря времени! А может можно какнибудь проще сделать и быстрее?
...
Рейтинг: 0 / 0
Может ли функция вернуть два значения?
    #35103588
v0v4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возвращать свой тип или массив.
...
Рейтинг: 0 / 0
Может ли функция вернуть два значения?
    #35103704
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
функция возвращает одно значение. Но оно (значение) может быть весьма сложно устроено (от типов, до сетов этих типов).
...
Рейтинг: 0 / 0
Может ли функция вернуть два значения?
    #35103729
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leximus образно говоря:
Код: plaintext
1.
2.
3.
function EmpId1(select Id1 from Employees where User=current_user)
function EmpId2(select Id2 from Employees where User=current_user)
INSERT INTO Tasks (Id, Date, Name, Emp_Id1, Emp_Id2) VALUES ( 1 , '22.11.2010', 'Тест', EmpId1, EmpId2)

отвлекаясь от синтаксиса, на вашем примере

function EmpId(select Id1,Id2 from Employees where User=current_user)
INSERT INTO Tasks (Id, Date, Name, Emp_Id1, Emp_Id2) VALUES (1, '22.11.2010', 'Тест', EmpId.Id1, EmpId.Id2)

как обеспечить вызов один раз - см. в доке STABLE . или приемы вида

,foo.fld1
,...
,foo.fldN

FROM ... , (SELECT ..... From .... LIMIT 1) AS foo
...
Рейтинг: 0 / 0
Может ли функция вернуть два значения?
    #35103809
Leximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot 4321function EmpId(select Id1,Id2 from Employees where User=current_user)
INSERT INTO Tasks (Id, Date, Name, Emp_Id1, Emp_Id2) VALUES (1, '22.11.2010', 'Тест', EmpId.Id1, EmpId.Id2)
[/quot]

А в этой ситуации функция два раза вызываться будет или один?

И может можно сделать константу каждому пользователю, ну например чтобы вызове select UserId у каждого пользователя своё значение возвращалось, или это только через функцию?
...
Рейтинг: 0 / 0
Может ли функция вернуть два значения?
    #35104083
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeximusА в этой ситуации функция два раза вызываться будет или один?никакой "этой" ситуации еще нет. есть псевдокод, не отвечающий никаким требованиям к оформлению ф-й в Пг. Когда нарисуете нечто более менее похожее - запихайте в ф-ю нотис, и просмотрите кол-во сообщений. ПОиграйте с модификатором STABLE/и т.п.


LeximusИ может можно сделать константу каждому пользователю, ну например чтобы вызове select UserId у каждого пользователя своё значение возвращалось, или это только через функцию?поищите поиском по ~~ константы сеанса
Решения есть. В т.ч. - через Temporary таблицу.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Может ли функция вернуть два значения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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