Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Решил взяться за PostgreSQL (8.1.3) раннее работал с MySQL начал делать проектик на postgresql, как IDE использую EMS SQL Manager for pgSQL ранее, работая с MySQL, основу логики я делал на хранимых процедурах, тут я чё-то не увидел пункта меню для создания хранимых процедур, и в инструкции не встретил Stored procedure. Получается их во постгрисе нет? Наверняка есть альтернатива? какая? и ещё, в дереве объектов для БД увидел: - функции - триггеры - индексы - типы - операторы - представления .... с этим более или менее понятно, а остальное.... - схемы - домены - правила - последовательности - агрегаты уважаемые гуру, объясните мне на пальцах к чему это, в каких случаях и для чего это нужно или ткните куда почитать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 20:53 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчиктут я чё-то не увидел пункта меню для создания хранимых процедур, и в инструкции не встретил Stored procedure. Получается их во постгрисе нет? Наверняка есть альтернатива? какая? Насмешил однако....Или твоя вера запрещает использование поисковиков и гарантирует нирвану за глупые вопросы? ;) Есть UDF есть И есть процедурные языки для их написания. Читать нужно сначала хотябы этот форум. Просто вот взял сел,распечатал и читай.... есть еще начинания по переводу доки Для старта уж поверь должно хватить. "Схемы Домены Агрегаты " - только в первоисточниках. RTFM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 23:06 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 23:57 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Shweik....Или твоя вера запрещает использование поисковиков и гарантирует нирвану за глупые вопросы? ;) поисковики создают ощущение, что по постгрису есть всего 10 документов, из них 3 более или менее содержательные, остальные какие-то мутные, парочку частично переведены (причём самые не интересные главы) По моей вере :) познавать концепцию алгебры множеств by Postgres проще в сравнении и на первых порах "на пальцах". когда я немного въеду, я открою мануал, возьму словарь и буду врубаться. Да и больше вопросов не по концепции а по синтаксису. по поводу хранимых процедур перефразирую свой вопрос: Я знаю что такое пользовательская функция, но, как я успел заметить, функция возвращает одну переменную, а через процедуру можно получить набор записей есть код процедуры на MySQL CREATE PROCEDURE `Get_men_info`(IN _score_num INTEGER(11)) NOT DETERMINISTIC SQL SECURITY DEFINER COMMENT '' BEGIN SELECT mens.score_num,mens.men_name , Get_addr_str( streets.street_name, streets.street_abbr, mens.build_num, mens.ab, mens.room_num) AS street FROM mens,streets WHERE mens.score_num = _score_num AND mens.street_id = streets.id; END; как мне организовать аналогичное на постгрисе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2006, 00:47 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Shweik"Схемы Домены Агрегаты " - только в первоисточниках. будьте добры, хотябы в двух словах, на примере какой-нибудь рабочей ситуации рассказать, например: ... была такая-то база, такая-то сложность... и благодаря тому, что домены... мы сделали так-то и пришла нирвана! в чём фишки этих понятий? пока, на практике, по сравнению с MySQL, плюсом я вижу только почему-то русфицированноый EMS Manager и контроль целостности данных а всё остальное как непонятые фусечки на капоте авто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2006, 00:58 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчик по поводу хранимых процедур перефразирую свой вопрос: Я знаю что такое пользовательская функция, но, как я успел заметить, функция возвращает одну переменную, а через процедуру можно получить набор записей есть код процедуры на MySQL CREATE PROCEDURE `Get_men_info`(IN _score_num INTEGER(11)) NOT DETERMINISTIC SQL SECURITY DEFINER COMMENT '' BEGIN SELECT mens.score_num,mens.men_name , Get_addr_str( streets.street_name, streets.street_abbr, mens.build_num, mens.ab, mens.room_num) AS street FROM mens,streets WHERE mens.score_num = _score_num AND mens.street_id = streets.id; END; как мне организовать аналогичное на постгрисе? Примерно так create function get_men_info (_score_num int) returns setof record as ' ... ' language 'sql' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2006, 09:14 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчик CREATE PROCEDURE `Get_men_info`(IN _score_num INTEGER(11)) NOT DETERMINISTIC SQL SECURITY DEFINER COMMENT '' BEGIN END; как мне организовать аналогичное на постгрисе? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. это Вам вернет не одну строку, а набор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2006, 11:58 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
А можно и так : create or replace function getusers() returns SETOF users as ' select * from users; ' LANGUAGE SQL; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2006, 15:17 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
мда... создал парочку тостовых табличек Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Модернизируем, вернее подгоняем под себя, вариант 2 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ERROR: relation "mens" does not exist CONTEXT: compile of PL/pgSQL function "get_mens" near line 1 с вариантом 3 - аналогично Код: plaintext 1. 2. 3. 4. 5. 6. 7. ERROR: relation "mens" does not exist CONTEXT: SQL function "getusers" и почему-то два последних варианта, EMS Manager не хочет делать, в списке доступных возвращаемых типов данных нет "mens" Уважаемые, что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2006, 19:06 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчики почему-то два последних варианта, EMS Manager не хочет делать, в списке доступных возвращаемых типов данных нет "mens" Извините что не в тему. Надоело. с выходом постгреса пот винду произошел такой наплыв пользователей которые пользуются всяческими EMS SQL Manager. что смыло большинство более менее продвинутых людей из этого форума. Как об стену горох. Читайте официальную документацию!! Там все очень хорошо разжевано и с примерами. и пишите функции в ручную!! Очень полезно для общего развития. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2006, 16:17 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчик будьте добры, хотябы в двух словах, на примере какой-нибудь рабочей ситуации рассказать, например: ... была такая-то база, такая-то сложность... и благодаря тому, что домены... мы сделали так-то и пришла нирвана! Ну была у меня пара таблиц с полем Код: plaintext Код: plaintext Код: plaintext Кифирчик в чём фишки этих понятий? Фишка, например, доменов в том же, в чём и синонимы типов в процедурных языках: они дают осмысленные имена безликим integer, real, pointer, в результате чего упрощают разработку, рефакторинг и облегчают понимание программы. Кифирчик пока, на практике, по сравнению с MySQL, плюсом я вижу только почему-то русфицированноый EMS Manager и контроль целостности данных а всё остальное как непонятые фусечки на капоте авто Странно, но только подавляющее большинство этих фусечек описаны в SQL2003 и как бы используются на практике. Если Вы сейчас не видите им применения, это не значит, что они не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2006, 08:59 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчик мда... создал парочку тостовых табличек Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ERROR: relation "mens" does not exist CONTEXT: compile of PL/pgSQL function "get_mens" near line 1 "schema1"."mens" НЕ РАВНО!!!!!!!!!!!!!!!! schema1.mens вот такое мое ИМХО...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2006, 09:16 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчик на выходе получаем нечто вида Код: plaintext 1. 2. 3. 4. 5. 6. 7. млииин. (много-много очень матерных букав) Код: plaintext эдак можете написать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2006, 11:54 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. а вот когда возвращается связанная таблица Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2006, 21:22 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
FM32YO aka KID"schema1"."mens" НЕ РАВНО!!!!!!!!!!!!!!!! schema1.mens вот такое мое ИМХО...... http://www.postgresql.org/docs/8.1/interactive/sql-syntax.html#SQL-SYNTAX-LEXICAL There is a second kind of identifier: the delimited identifier or quoted identifier. It is formed by enclosing an arbitrary sequence of characters in double-quotes ("). A delimited identifier is always an identifier, never a key word. So "select" could be used to refer to a column or table named "select", whereas an unquoted select would be taken as a key word and would therefore provoke a parse error when used where a table or column name is expected. The example can be written with quoted identifiers like this: UPDATE "my_table" SET "a" = 5; Я всё толком не перевёл, но почему-то кажется, что здесь говорится о том, что "schema1"."mens" = schema1.mens если нет, то пожалуйста аргументируйте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2006, 21:27 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчикhttp://www.postgresql.org/docs/8.1/interactive/sql-syntax.html#SQL-SYNTAX-LEXICAL There is a second kind of identifier: the delimited identifier or quoted identifier. It is formed by enclosing an arbitrary sequence of characters in double-quotes ("). A delimited identifier is always an identifier, never a key word. So "select" could be used to refer to a column or table named "select", whereas an unquoted select would be taken as a key word and would therefore provoke a parse error when used where a table or column name is expected. The example can be written with quoted identifiers like this: UPDATE "my_table" SET "a" = 5; Я всё толком не перевёл, но почему-то кажется, что здесь говорится о том, что "schema1"."mens" = schema1.mens если нет, то пожалуйста аргументируйте Предлагаю провести следующую серию экспериментов, и проверить, равенство. CREATE TABLE "public"."hdkalk" ("kod" SERIAL) WITH OIDS; SELECT "kod" FROM "hdkalk" ; SELECT Kod FROM HdKalk ; SELECT "Kod" FROM "HdKalk" ; Домашнее задание: Какое из этих выражений свалится с ошибкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 06:26 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Kruchinin Pahan CREATE TABLE "public"."hdkalk" ("kod" SERIAL) WITH OIDS; SELECT "kod" FROM "hdkalk" ; SELECT Kod FROM HdKalk ; SELECT "Kod" FROM "HdKalk" ; Домашнее задание: Какое из этих выражений свалится с ошибкой? жирное = ошибка... но какое это отношение имеет к сказанному мной Код: plaintext 1. 2. ведь в данном случае регистр соблюден... хотя, дело на в этом, я просто призабыл в каком случае наступил на грабли, а теперь, после Вашего замечания вспомнил, что случай был именно в том, что таблица мной создалась как "MyTable", а запрос я дал SELECT FROM Mytable так что простите: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 09:32 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчик Код: plaintext 1. дока на SELECTfunction_name Function calls can appear in the FROM clause. (This is especially useful for functions that return result sets, but any function can be used.) This acts as though its output were created as a temporary table for the duration of this single SELECT command. An alias may also be used. If an alias is written, a column alias list can also be written to provide substitute names for one or more attributes of the function's composite return type. If the function has been defined as returning the record data type, then an alias or the key word AS must be present, followed by a column definition list in the form ( column_name data_type [, ... ] ) . The column definition list must match the actual number and types of columns returned by the function. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 12:31 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
зы. и поиском, поиском почастче. тут, за пару последних лет, разных вариантов ответов на этот вопрос дадено... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 12:36 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. и кстати конструкция... 4321 Код: plaintext не работает Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 22:11 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчик и кстати конструкция... 4321 Код: plaintext не работает Код: plaintext попробуйте так Код: plaintext по поводу неудобств - еще раз - хотя бы прошерстите поиском по форуму по RECORD SETOF и т.п. Найдете варианты, не трнебующие описания возвращаемого типа при селекте (но при создании). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2006, 07:50 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
порылся поиском, вариантов не много либо при каждом вызове описываем то, что получаем либо создаём свой тип данных и его возвращаем вообще мне не понятна концепция отказа от процедур и работа с одними функциями ведь кажется есть возможность запускать sql скрипты из файлов, это ведь просто последовательный вызов команд, почему-бы это было не обозвать хранимой процедурой, добавить параметры... да и мне кажется Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. будем привыкать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2006, 11:08 |
|
||
|
хранимые процедуры, схемы, домены...
|
|||
|---|---|---|---|
|
#18+
Кифирчик_порылся поиском, вариантов не много либо при каждом вызове описываем то, что получаем либо создаём свой тип данных и его возвращаемеще с 8.1 доступно вставлять возврат в перечень параметров ф-ии. описание типа не потребуеца. Кифирчик_вообще мне не понятна концепция отказа от процедур и работа с одними функциямиможно тут попадробния? и чем, по вашему, проце-дура категорицки отличаица от ф-ии? особливо, если возврат ее описан как void? вы миня бизумна интрихуете. или вы хотите хранить на серваке поименованные батчи: BEGIN; .... .... COMMIT; вместо ф-ий, и вызывать их? так запишите свой ээээ...батч, вернее его тело в SQL ф-ию, с типом возврата void, и наслаждайтися. Кифирчик_ведь кажется есть возможность запускать sql скрипты из файлов, это ведь просто последовательный вызов команд, почему-бы это было не обозвать хранимой процедурой, добавить параметры... да и мне кажется а чито, запихав фсе это в ф-ю на лангвидж SQL вы получаите что-то иное? я уасс не панимаю. есть масса процедурных языков, на котором вы имеете возможность написать ф-ю. plpgsql - не единственный, кроме того, в случае SQL ф-й - вам даже не надо добавлять язык в базу. какие-то у вас придирки, прав-слово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2006, 11:42 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33936957&tid=2006140]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
132ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 497ms |

| 0 / 0 |
