powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вопрос новичка в PG
16 сообщений из 16, страница 1 из 1
Вопрос новичка в PG
    #40131137
most23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть функция f_test которая определена как RETURNS text.
Пишется скрипт, который должен вызвать эту функцию и сохранить результат в локальной переменной l_ret.
Объясните пожалуйста есть ли разница, как писать в скрипте:

Код: plsql
1.
SELECT f_test() INTO l_ret;

или
Код: plsql
1.
l_ret:=f_test();
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131235
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
most23
Есть функция f_test которая определена как RETURNS text.
Пишется скрипт, который должен вызвать эту функцию и сохранить результат в локальной переменной l_ret.
Объясните пожалуйста есть ли разница, как писать в скрипте:

Код: plsql
1.
SELECT f_test() INTO l_ret;

или
Код: plsql
1.
l_ret:=f_test();



Никакой... чистая вкусовщина.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131290
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если внутри f_test будет exception, то, собирая стек вызовов, второй вариант будет более компактным:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
create function test.f_test() returns text language plpgsql as $$
begin
  raise exception 'Error test';
end
$$

create function test.f1() returns text language plpgsql as $$
declare
  l_result text;
  l_context text;
begin
  select test.f_test() into l_result;
  return l_result;
exception
  when others then
    GET STACKED DIAGNOSTICS
      l_context := pg_exception_context
    ;
    return l_context;
end
$$

create function test.f2() returns text language plpgsql as $$
declare
  l_result text;
  l_context text;
begin
  l_result := test.f_test();
  return l_result;
exception
  when others then
    GET STACKED DIAGNOSTICS
      l_context := pg_exception_context
    ;
    return l_context;
end
$$



Код: sql
1.
2.
3.
4.
select test.f1();
PL/pgSQL function test.f_test() line 3 at RAISE
SQL statement "select test.f_test()"
PL/pgSQL function test.f1() line 6 at SQL statement



Код: sql
1.
2.
3.
select test.f2();
PL/pgSQL function test.f_test() line 3 at RAISE
PL/pgSQL function test.f2() line 6 at assignment



Могу предположить, что и выполняться он будет чуть быстрее (как минимум текста для парсинга меньше). Ну и читается нагляднее.
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131313
а как в постгре ф-и разложить по группам?
чтобы не в одной куче все, а по схемам, например
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131324
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
а как в постгре ф-и разложить по группам?
чтобы не в одной куче все, а по схемам, например


ну вот по схемам например и разложить.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131382
most23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
я после Oracle как-то не вкуриваю, а что вообще такое 'схема' в PG?
В Oracle это совокупность объектов принадлежащих юзеру, по умолчанию он может их для себя создавать и имеет к ним доступ и может давать доступы другим юзерам.
А PG мне кажется это что-то несколько другое?
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131478
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
most23,

В oracle пользователь может создавать объекты ровно в одной схеме, имя которой совпадает с именем пользователя.
А в постгресе можно создавать сколько угодно схем и раскладывать по ним объекты. Хорошая аналогия: схемы это каталоги в файловой системе, а объекты это файлы. Ну только каталоги не могут быть вложенными (нельзя создать схему внутри другой схемы).
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131490
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
most23
Maxim Boguk,
я после Oracle как-то не вкуриваю, а что вообще такое 'схема' в PG?
В Oracle это совокупность объектов принадлежащих юзеру, по умолчанию он может их для себя создавать и имеет к ним доступ и может давать доступы другим юзерам.
А PG мне кажется это что-то несколько другое?

в PG эта тема аналогична MSSQL. пользователь != схема.
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131493
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Лузанов
most23,

В oracle пользователь может создавать объекты ровно в одной схеме, имя которой совпадает с именем пользователя.
...


Нет. В Оракле точно такой же синтаксис: create SCHEMA.TABLE (...);
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131545
most23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
most23,

В oracle пользователь может создавать объекты ровно в одной схеме, имя которой совпадает с именем пользователя.
А в постгресе можно создавать сколько угодно схем и раскладывать по ним объекты. Хорошая аналогия: схемы это каталоги в файловой системе, а объекты это файлы. Ну только каталоги не могут быть вложенными (нельзя создать схему внутри другой схемы).

Если схема в PG это аналог каталога...какая-то не вполне аналогия наверное, ведь схема всё же связана с именем пользователя...или нет?
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131552
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
most23
Павел Лузанов
most23,

В oracle пользователь может создавать объекты ровно в одной схеме, имя которой совпадает с именем пользователя.
А в постгресе можно создавать сколько угодно схем и раскладывать по ним объекты. Хорошая аналогия: схемы это каталоги в файловой системе, а объекты это файлы. Ну только каталоги не могут быть вложенными (нельзя создать схему внутри другой схемы).

Если схема в PG это аналог каталога...какая-то не вполне аналогия наверное, ведь схема всё же связана с именем пользователя...или нет?


схема в PG НИКАК с именем пользователя не связана ВООБЩЕ.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131560
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Павел Лузанов
most23,

В oracle пользователь может создавать объекты ровно в одной схеме, имя которой совпадает с именем пользователя.
...


Нет. В Оракле точно такой же синтаксис: create SCHEMA.TABLE (...);

Александр, а кому будет принадлежать таблица, кто будет владельцем? Если правильно помню (хотя похоже всё забыл), то пользователю с именем SCHEMA.

В postgres в одной схеме запросто могут находиться объекты разных пользователей.

А вообще использование схем это стандарт SQL. postgres и oracle его поддерживают. Просто oracle поддерживает немного в урезанном виде.
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131569
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Лузанов
Alexander A. Sak
пропущено...


Нет. В Оракле точно такой же синтаксис: create SCHEMA.TABLE (...);

Александр, а кому будет принадлежать таблица, кто будет владельцем? Если правильно помню (хотя похоже всё забыл), то пользователю с именем SCHEMA.


Да, таблица будет принадлежать пользователю SCHEMA, а не тому, кто создает эту таблицу.
Я уточнял насчет " пользователь может создавать объекты ровно в одной схеме, имя которой совпадает с именем пользователя ". Создавать же можно в чужой схеме.
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131617
kliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ПГ по умолчанию владельцем будет создающий, если не указано иное в скрипте создания таблицы ALTER TABLE OWNER TO
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131618
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak

Я уточнял насчет " пользователь может создавать объекты ровно в одной схеме, имя которой совпадает с именем пользователя ". Создавать же можно в чужой схеме.

Спасибо за уточнение, не точно выразился.
...
Рейтинг: 0 / 0
Вопрос новичка в PG
    #40131694
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Лузанов
А вообще использование схем это стандарт SQL. postgres и oracle его поддерживают.

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


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