Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / хранимые процедуры, схемы, домены... / 24 сообщений из 24, страница 1 из 1
18.08.2006, 20:53
    #33929674
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Решил взяться за PostgreSQL (8.1.3)
раннее работал с MySQL
начал делать проектик на postgresql, как IDE использую EMS SQL Manager for pgSQL
ранее, работая с MySQL, основу логики я делал на хранимых процедурах, тут я чё-то не увидел пункта меню для создания хранимых процедур, и в инструкции не встретил Stored procedure.
Получается их во постгрисе нет? Наверняка есть альтернатива? какая?

и ещё, в дереве объектов для БД увидел:
- функции
- триггеры
- индексы
- типы
- операторы
- представления
.... с этим более или менее понятно, а остальное....
- схемы
- домены
- правила
- последовательности
- агрегаты
уважаемые гуру, объясните мне на пальцах к чему это, в каких случаях и для чего это нужно
или ткните куда почитать
...
Рейтинг: 0 / 0
18.08.2006, 23:06
    #33929805
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчиктут я чё-то не увидел пункта меню для создания хранимых процедур, и в инструкции не встретил Stored procedure.
Получается их во постгрисе нет? Наверняка есть альтернатива? какая?

Насмешил однако....Или твоя вера запрещает использование поисковиков и гарантирует нирвану за глупые вопросы? ;)
Есть UDF есть И есть процедурные языки для их написания. Читать нужно сначала хотябы этот форум.
Просто вот взял сел,распечатал и читай.... есть еще начинания по переводу доки Для старта уж поверь должно хватить.
"Схемы Домены Агрегаты " - только в первоисточниках.
RTFM.
...
Рейтинг: 0 / 0
18.08.2006, 23:57
    #33929863
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
...
Рейтинг: 0 / 0
19.08.2006, 00:47
    #33929923
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
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;
как мне организовать аналогичное на постгрисе?
...
Рейтинг: 0 / 0
19.08.2006, 00:58
    #33929931
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Shweik"Схемы Домены Агрегаты " - только в первоисточниках.
будьте добры, хотябы в двух словах, на примере какой-нибудь рабочей ситуации рассказать, например: ... была такая-то база, такая-то сложность... и благодаря тому, что домены... мы сделали так-то и пришла нирвана!
в чём фишки этих понятий?

пока, на практике, по сравнению с MySQL, плюсом я вижу только почему-то русфицированноый EMS Manager и контроль целостности данных а всё остальное как непонятые фусечки на капоте авто
...
Рейтинг: 0 / 0
19.08.2006, 09:14
    #33930022
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчик
по поводу хранимых процедур перефразирую свой вопрос: Я знаю что такое пользовательская функция, но, как я успел заметить, функция возвращает одну переменную, а через процедуру можно получить набор записей
есть код процедуры на 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'
...
Рейтинг: 0 / 0
19.08.2006, 11:58
    #33930154
FM32YO aka KID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчик
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.
CREATE OR REPLACE FUNCTION EngInBPass(int8)
  RETURNS SETOF enginbp AS
$BODY$
declare enginbp_row enginbp%rowtype;
DECLARE nBPId int8 := $ 1  ;
	
begin
	for enginbp_row in select * from enginbp 
			WHERE enginbp.budpassid = nBPId
	loop
		return next enginbp_row;
	end loop;
end;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

это Вам вернет не одну строку, а набор
...
Рейтинг: 0 / 0
19.08.2006, 15:17
    #33930317
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
А можно и так :
create or replace function getusers() returns SETOF users as
'
select * from users;
'
LANGUAGE SQL;
...
Рейтинг: 0 / 0
19.08.2006, 19:06
    #33930488
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
мда...
создал парочку тостовых табличек
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE "schema1"."mens" (
  "id" SERIAL, 
  "sex_id" INTEGER, 
  "name" VARCHAR( 20 ), 
  CONSTRAINT "table1_pkey" PRIMARY KEY("id"), 
  CONSTRAINT "mens_fk" FOREIGN KEY ("sex_id")
    REFERENCES "schema1"."sexs"("id")
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    NOT DEFERRABLE
) WITH OIDS;
CREATE TABLE "schema1"."sexs" (
  "id" BIGSERIAL, 
  "sex_name" VARCHAR( 20 ), 
  CONSTRAINT "sex_name_pkey" PRIMARY KEY("id")
) WITH OIDS;
пробуем вариант 1-й (...setof record...)
Код: plaintext
1.
2.
3.
4.
5.
CREATE OR REPLACE FUNCTION "schema1"."function2" () RETURNS SETOF "pg_catalog"."record" AS
$body$
SELECT * FROM schema1.mens AS A, schema1.sexs AS B
WHERE A.sex_id = B.id;
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
на выходе получаем нечто вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT schema1.function2();

function2
( 7 , 2 ,Наталья, 2 ,девушка)
( 6 , 1 ,Григорий, 1 ,парень)
( 5 , 2 ,Анна, 2 ,девушка)
( 4 , 2 ,Полина, 2 ,девушка)
это типа один столбец, а значения разделены запятыми, с трудом представляю как я это буду преподносить в клиенте :(

Модернизируем, вернее подгоняем под себя, вариант 2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE OR REPLACE FUNCTION schema1.get_mens()
  RETURNS SETOF schema1.mens AS
$BODY$
declare mens_row mens%rowtype;
	
begin
	for mens_row in select * from mens
	loop
		return next mens_row;
	end loop;
end;
$BODY$
 LANGUAGE 'plpgsql' VOLATILE;
при попытке откомпилить выскакивает ошибка
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.
create or replace function getusers() returns SETOF  mens as
 '
 select * from mens;
 '
 LANGUAGE 'SQL';

ERROR:  type "mens" does not exist
когда ставлю вместо "mens" - "schema1.mens"

ERROR: relation "mens" does not exist
CONTEXT: SQL function "getusers"

и почему-то два последних варианта, EMS Manager не хочет делать, в списке доступных возвращаемых типов данных нет "mens"

Уважаемые, что я делаю не так?
...
Рейтинг: 0 / 0
20.08.2006, 16:17
    #33930821
Алексей Ключников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчики почему-то два последних варианта, EMS Manager не хочет делать, в списке доступных возвращаемых типов данных нет "mens"

Извините что не в тему.
Надоело. с выходом постгреса пот винду
произошел такой наплыв пользователей которые пользуются всяческими
EMS SQL Manager. что смыло большинство более менее продвинутых
людей из этого форума.


Как об стену горох. Читайте официальную документацию!! Там все очень хорошо разжевано и с примерами.
и пишите функции в ручную!! Очень полезно для общего развития.
...
Рейтинг: 0 / 0
21.08.2006, 08:59
    #33931318
Andrew Sagulin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчик
будьте добры, хотябы в двух словах, на примере какой-нибудь рабочей ситуации рассказать, например: ... была такая-то база, такая-то сложность... и благодаря тому, что домены... мы сделали так-то и пришла нирвана!


Ну была у меня пара таблиц с полем
Код: plaintext
integer not null default 16
. По ходу дела условия изменились, понадобилось в этом поле хранить null значения. Что делаем в mysql:
Код: plaintext
alter table alter column ...
во всех таблицах, где этот тип данных использовался. Ждём, пока mysql заново создаст все эти таблицы и соответствующие им индексы (особенно весело, если таблицы в несколько гигабайт). Через час-другой можем продолжать работу. Что делаем в PostgreSQL (и любой другой СУБД с поддержкой доменов):
Код: plaintext
alter domain ...
. Через несколько секунд можем продолжать работу.

Кифирчик
в чём фишки этих понятий?


Фишка, например, доменов в том же, в чём и синонимы типов в процедурных языках: они дают осмысленные имена безликим integer, real, pointer, в результате чего упрощают разработку, рефакторинг и облегчают понимание программы.

Кифирчик
пока, на практике, по сравнению с MySQL, плюсом я вижу только почему-то русфицированноый EMS Manager и контроль целостности данных а всё остальное как непонятые фусечки на капоте авто

Странно, но только подавляющее большинство этих фусечек описаны в SQL2003 и как бы используются на практике. Если Вы сейчас не видите им применения, это не значит, что они не нужны.
...
Рейтинг: 0 / 0
21.08.2006, 09:16
    #33931337
FM32YO aka KID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчик
мда...
создал парочку тостовых табличек
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE "schema1"."mens" (
[src]

Модернизируем, вернее подгоняем под себя, вариант  2 
[src]CREATE OR REPLACE FUNCTION schema1.get_mens()
  RETURNS SETOF schema1.mens AS
$BODY$
declare mens_row mens%rowtype;
	
begin
	for mens_row in select * from mens
	loop
		return next mens_row;
	end loop;
end;
$BODY$
 LANGUAGE 'plpgsql' VOLATILE;
при попытке откомпилить выскакивает ошибка
ERROR: relation "mens" does not exist
CONTEXT: compile of PL/pgSQL function "get_mens" near line 1



"schema1"."mens"
НЕ РАВНО!!!!!!!!!!!!!!!!
schema1.mens

вот такое мое ИМХО......
...
Рейтинг: 0 / 0
21.08.2006, 11:54
    #33931753
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчик на выходе получаем нечто вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT schema1.function2();

function2
( 7 , 2 ,Наталья, 2 ,девушка)
( 6 , 1 ,Григорий, 1 ,парень)
( 5 , 2 ,Анна, 2 ,девушка)
( 4 , 2 ,Полина, 2 ,девушка)
это типа один столбец, а значения разделены запятыми, с трудом представляю как я это буду преподносить в клиенте :(
млииин. (много-много очень матерных букав)
Код: plaintext
SELECT * FROM schema1.function2();
почуйствуйте разницу.


эдак можете написать
Код: plaintext
SELECT schema1.mens FROM schema1.mens;
и тоже любопытьствовать, что же вам с эти делать на клиенте.
...
Рейтинг: 0 / 0
21.08.2006, 21:22
    #33933299
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Код: plaintext
1.
2.
3.
4.
5.
CREATE OR REPLACE FUNCTION "schema1"."getusers" () RETURNS SETOF "schema1"."mens" AS
$body$
select * from schema1.mens;
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
такое заработало, скрипт не выполнялся из-за того, что в теле не добавил schema1.

а вот когда возвращается связанная таблица
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE FUNCTION "schema1"."function4" () RETURNS SETOF RECORD AS
$body$
SELECT * FROM schema1.mens AS A, schema1.sexs AS B
WHERE A.sex_id = B.id;
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

SELECT schema1.function4(); - работает

SELECT * FROM schema1.function4(); - выдаёт ошибку
ERROR:  a column definition list is required for functions returning "record"
как сделать правильно?
...
Рейтинг: 0 / 0
21.08.2006, 21:27
    #33933302
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
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

если нет, то пожалуйста аргументируйте
...
Рейтинг: 0 / 0
22.08.2006, 06:26
    #33933497
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчик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" ;

Домашнее задание: Какое из этих выражений свалится с ошибкой?
...
Рейтинг: 0 / 0
22.08.2006, 09:32
    #33933655
FM32YO aka....
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
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.
"schema1"."mens"
НЕ РАВНО!!!!!!!!!!!!!!!!
schema1.mens 
????

ведь в данном случае регистр соблюден...

хотя, дело на в этом, я просто призабыл в каком случае наступил на грабли, а теперь, после Вашего замечания вспомнил, что случай был именно в том, что таблица мной создалась как "MyTable", а запрос я дал
SELECT FROM Mytable

так что простите:
Код: plaintext
"schema1"."mens" = schema1.mens 
...
Рейтинг: 0 / 0
22.08.2006, 12:31
    #33934297
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчик
Код: plaintext
1.
 SELECT * FROM schema1.function4(); - выдаёт ошибку
ERROR:  a column definition list is required for functions returning "record"
как сделать правильно?правильно - почитать доку на SELECT, ибо на ней вы обнаружите массу интересного, в том числе следующий абзайц:
дока на 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.
...
Рейтинг: 0 / 0
22.08.2006, 12:36
    #33934330
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
зы. и поиском, поиском почастче. тут, за пару последних лет, разных вариантов ответов на этот вопрос дадено...
...
Рейтинг: 0 / 0
22.08.2006, 22:11
    #33936024
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION "schema1"."function3" () RETURNS SETOF "pg_catalog"."record" AS
$body$
SELECT A.name, B.sex_name
FROM schema1.mens AS A, schema1.sexs AS B
WHERE A.sex_id = B.id;
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

SELECT * FROM schema1.function3() AS (f1 varchar( 100 ), f2 varchar( 100 ));
Изврат какой-то, представляю, как меняю что-то в функции, а затем пересматривать все скрипты, чтобы подкорректировать вызов :(

и кстати конструкция...
4321
Код: plaintext
SELECT schema1.mens FROM schema1.mens;

не работает
Код: plaintext
ERROR:  missing FROM-clause entry for table "schema1"
Мне жутко интересно, что там должно было получиться?
...
Рейтинг: 0 / 0
23.08.2006, 07:50
    #33936273
4321ё
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчик и кстати конструкция...
4321
Код: plaintext
SELECT schema1.mens FROM schema1.mens;

не работает
Код: plaintext
ERROR:  missing FROM-clause entry for table "schema1"
Мне жутко интересно, что там должно было получиться?
попробуйте так
Код: plaintext
SELECT mens FROM schema1.mens;
я смотрел на таблице из public, т.ч. не указывал схемы. получается то, что вы получаете при SELECT myfunctionxxx(); вместо SELECT * FROM myfunctionxxx();

по поводу неудобств - еще раз - хотя бы прошерстите поиском по форуму по RECORD SETOF и т.п. Найдете варианты, не трнебующие описания возвращаемого типа при селекте (но при создании).
...
Рейтинг: 0 / 0
23.08.2006, 11:08
    #33936773
Кифирчик_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
порылся поиском, вариантов не много
либо при каждом вызове описываем то, что получаем
либо создаём свой тип данных и его возвращаем

вообще мне не понятна концепция отказа от процедур и работа с одними функциями
ведь кажется есть возможность запускать sql скрипты из файлов, это ведь просто последовательный вызов команд, почему-бы это было не обозвать хранимой процедурой, добавить параметры...
да и мне кажется
Код: plaintext
SELECT * FROM table;
выполняется быстрее чем что-то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DECLARE
     c cursor for
         SELECT * FROM table;
     p_result RECORD;
BEGIN
    open c;
    loop
        fetch c into p_result;
        exit when not found;
        RETURN NEXT p_result;
    end loop;
    close c;
    return;
END;

будем привыкать
...
Рейтинг: 0 / 0
23.08.2006, 11:42
    #33936934
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
Кифирчик_порылся поиском, вариантов не много
либо при каждом вызове описываем то, что получаем
либо создаём свой тип данных и его возвращаемеще с 8.1 доступно вставлять возврат в перечень параметров ф-ии. описание типа не потребуеца.

Кифирчик_вообще мне не понятна концепция отказа от процедур и работа с одними функциямиможно тут попадробния? и чем, по вашему, проце-дура категорицки отличаица от ф-ии? особливо, если возврат ее описан как void? вы миня бизумна интрихуете.

или вы хотите хранить на серваке поименованные батчи:
BEGIN;
....
....
COMMIT;
вместо ф-ий, и вызывать их? так запишите свой ээээ...батч, вернее его тело в SQL ф-ию, с типом возврата void, и наслаждайтися.
Кифирчик_ведь кажется есть возможность запускать sql скрипты из файлов, это ведь просто последовательный вызов команд, почему-бы это было не обозвать хранимой процедурой, добавить параметры...
да и мне кажется
а чито, запихав фсе это в ф-ю на лангвидж SQL вы получаите что-то иное? я уасс не панимаю. есть масса процедурных языков, на котором вы имеете возможность написать ф-ю. plpgsql - не единственный, кроме того, в случае SQL ф-й - вам даже не надо добавлять язык в базу.

какие-то у вас придирки, прав-слово.
...
Рейтинг: 0 / 0
23.08.2006, 11:48
    #33936957
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимые процедуры, схемы, домены...
out параметры еще не отменили
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / хранимые процедуры, схемы, домены... / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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