powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выполнение строки SQL в PostgreSQL
7 сообщений из 7, страница 1 из 1
Выполнение строки SQL в PostgreSQL
    #39626841
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Как в PostgreSQL выполнить SQL строку?
P.S.
В MS SQL Server это можно выполнить так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
DECLARE @id_name VARCHAR(50);
DECLARE @table_name VARCHAR(50);

SET @id_name='ACTION_ID';
SET @table_name='ACTIONS_LOG'

EXEC ('SELECT MAX('+@id_name+') FROM '+@table_name+'');
...
Рейтинг: 0 / 0
Выполнение строки SQL в PostgreSQL
    #39626854
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986, Есть тут
http://www.sql.ru/forum/1282159/vyvesti-rezultat-zaprosa-iz-do?hl=prepare
, но мне хотелось сделать в функции:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION "METR"."restart_table"(table_name varchar(50), id_name varchar(50))
RETURNS VOID AS $$
DECLARE DSQL varchar(2000);
DECLARE Num int;
BEGIN
	 create table Temp(ID_Value int);
	 set DSQL = 'insert into Temp(ID_Value) select max('||id_name||')+1 from '||table_name;
	 --EXECUTE DSQL;<---Тут выполнение
	 set Num = (select ID_Value from Temp);
	 if (NUM is not null )
	 then
	 	 set DSQL = 'alter table '||table_name||' alter column '||id_name||' restart with '||cast(Num as char(10));
		 --EXECUTE DSQL;<---Тут выполнение
	 end if;
	 drop table Temp;
END;
$$ LANGUAGE plpgsql;
...
Рейтинг: 0 / 0
Выполнение строки SQL в PostgreSQL
    #39626857
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так функция создаётся без ошибок:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION "METR"."restart_table"(table_name varchar(50), id_name varchar(50))
RETURNS VOID AS $$
DECLARE DSQL varchar(2000);
DECLARE Num int;
BEGIN
	 create table Temp(ID_Value int);
	 DSQL = 'insert into Temp(ID_Value) select max('|| id_name ||')+1 from ' || table_name;
	 EXECUTE DSQL;
	 Num = (select ID_Value from Temp);
	 if (Num is not null )
	 then
	 	 DSQL = 'alter table '||table_name||' alter column '||id_name||' restart with '||cast(Num as char(10));
		 EXECUTE DSQL;
	 end if;
	 drop table Temp;
END;
$$ LANGUAGE plpgsql;
...
Рейтинг: 0 / 0
Выполнение строки SQL в PostgreSQL
    #39626929
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может проще использовать DO ?
...
Рейтинг: 0 / 0
Выполнение строки SQL в PostgreSQL
    #39627746
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Синий Слон,можно и так, но в системе эта логика реализована в функции
...
Рейтинг: 0 / 0
Выполнение строки SQL в PostgreSQL
    #39627987
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASukhov1986, а зачем таблицу создаете?
...
Рейтинг: 0 / 0
Выполнение строки SQL в PostgreSQL
    #39627989
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2ASukhov1986, а зачем таблицу создаете?

не трогайте его. он мсскльный код тупо лопатит.

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


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