powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Хранимая процедура
9 сообщений из 9, страница 1 из 1
Хранимая процедура
    #33702609
WizardI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В SQL есть возможность содовать хранимые процедуры, вот и я пытаюсь создать следующее:
CREATE PROC BuildInsert
@NameOfBuilding varchar (100),
@Adres varchar(100),
@OriginOfBuilding varchar (3000),
@ShapeOfBuilding varchar (1000)
AS
declare @maxel int
@maxel=0
select @maxel=max(id) from city
if @maxel==0 @maxel=1
else
@maxel=@maxel+1
INSERT INTO building (id_object, name, adres, origin, shape)
values(@maxel, @NameOfBuilding, @Adres, @OriginOfBuilding, @ShapeOfBuilding)
insert into city(id, name) values(@maxel,@NameOfBuilding)
GO

Ругается: syntax error at or near "PROC" at character 8
Не понимаю что ему нужно?!
...
Рейтинг: 0 / 0
Хранимая процедура
    #33702658
Алексей Ключников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У всех баз данных есть свои особенности написания конструкций на SQL и постгрес не исключение.
Прежде всего читайте оффициальную документацию на
http://www.postgresql.org/docs/8.1/interactive/index.html

И в частности по созданию хранимых процедур
http://www.postgresql.org/docs/8.1/interactive/server-programming.html
...
Рейтинг: 0 / 0
Хранимая процедура
    #33702661
WizardI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В хэлпе написано, что нет такого инструмента как хранимые процедуры, а есть только функции, тогда как мне её переделать?!
...
Рейтинг: 0 / 0
Хранимая процедура
    #33702664
Алексей Ключников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если совсем конкретно то смотреть сюда
http://www.postgresql.org/docs/8.1/interactive/sql-createfunction.html
...
Рейтинг: 0 / 0
Хранимая процедура
    #33702666
Алексей Ключников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WizardIВ хэлпе написано, что нет такого инструмента как хранимые процедуры, а есть только функции, тогда как мне её переделать?!
Хранимая процедура и есть функция.
...
Рейтинг: 0 / 0
Хранимая процедура
    #33702686
WizardI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал, но из тех примеров что там есть много не выжмешь...(((
Так и не понял как мне переделать...(((
...
Рейтинг: 0 / 0
Хранимая процедура
    #33702699
Алексей Ключников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо сделать что то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create function BuildInsert(varchar,varchar,varchar,varchar) returns boolean as
$$
declare
maxel int;
begin
maxel =  0 ;
select * from city where id=maxel;
..
insert ...
return true;
end;
$$
language plpgsql;

Перед этим создать язык plpgsql.
Код: plaintext
1.
2.
3.
4.
5.
CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler
    AS '$libdir/plpgsql', 'plpgsql_call_handler'
    LANGUAGE c;

CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;
...
Рейтинг: 0 / 0
Хранимая процедура
    #33702717
WizardI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое... Вот только один порос остался, когда мы пишем
insert into city (id, name) в какчестве занчений будет
values ($1, $2) ?!
...
Рейтинг: 0 / 0
Хранимая процедура
    #33702751
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WizardIСпасибо большое... Вот только один порос остался, когда мы пишем
insert into city (id, name) в какчестве занчений будет
values ($1, $2) ?!

Можно так. А можно по-другому:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create function BuildInsert(varchar,varchar,varchar,varchar) returns boolean as
$$
declare
...
-- Объявляю алиасы параметров
_NameOfBuilding alias for $ 1 ;
_Address alias for $ 2 ;
_OriginOfBuilding alias for $ 3 ;
_ShapeOfBuilding alias for $ 4 
...
begin
maxel =  0 ;
select * from city where id=maxel;
..
insert ...
return true;
end;
$$
language plpgsql;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Хранимая процедура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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