вопрос по PostgresSql
В общем, существует четкое разделение PL\SQL и SQL блоков - так что скорее всего нет.
Жаль. Спасибо.
что-то не понял что хотелось: использовать переменную в качестве столбца или записать результат выборки в переменную?
в зачем вообще это надо? я так понимаю в mysql такое извращение появилось тогда, когда он еще не поддерживал подзапросы для решения проблем select + insert/update
2 - судя по всему, ты не меня спрашивал, но тут действительно идет запись результата в переменную
variable var1 NUMBER
:var1 := 1;
select column from table where a = :var1;
или так:
variable var1 NUMBER
BEGIN
:var1:=somefunction;
END;
/
это конечно только там где поддерживаются команды SQL*Plus
declare @a int
select @a = <мегасложная штуковина>
select * from some_table where id = @a -- тут я хочу получить результат в окне
понятно, что можно в плскл блоке сделать вывод во временную таблицу
variable var1 number
select <что-то> into :var1 <мегасложная вещь>;
select * from some_table where id = :var1;
Переменные из sql/plus могут стоять везде где может стоять переменная pl/sql.
Обычно если хочется вывод в окно вырезают кусок кода и ставят двоеточия перед переменными pl/sql и получают переменные sql/plus.
create [temp] view
не ?
понятно, что можно в плскл блоке сделать вывод во временную таблицу
А если прав на создание нет? Или всегда юзеру соответсвтует схема, где можно создавать? Вообще, вроде как уже ответил на мой вопрос (может и нет, но мне проверить негде , и я ему верю)
Оставить комментарий
kovrovec
Можно ли использовать переменные в простых запросах?Например в функции можно написать:
CREATE OR REPLACE FUNCTION SomeFunc(integer)
RETURNS bigint AS
Declare myParam bigint;
$BODY$
select
column1 into myParam
from
table;
return myParam;
$BODY$
а вот в простом запросе использовать параметр не получается. К слову в MSSQL или MySql
можно просто написать
DECLARE @a int;
select @a = column1 from table
Может можно и в постгресе - кто-нибудь знает?
Я вот не нашел пока...