|
|
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Подскажите пожалуйста как создать переменную в postgres. Работаю в pgAdmin III. Например в MSQL declare @myVar int; в Firebird: declare :myVar int; И дальше делаем set и какие то вычисления с этой переменной. А он выдает ошибку "ОШИБКА: ошибка синтаксиса (примерное положение: "@") LINE 1: declare @myVar int; ^ ********** Ошибка ********** " Хочу получить в стиле, но в стиле postgres: declare @myVar int; set @myVar = 1; select @myVar; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 17:55 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldinЗдравствуйте. Подскажите пожалуйста как создать переменную в postgres... it depends --в каком месте, т.е. в каком языке [из кучи возможных] если про sql и переменные сеанса -- http://www.sql.ru/forum/actualsearch.aspx?search=?????????? ??????&sin=0&st=t&bid=7&a=&ma=0&dt=-1&s=1&so=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 18:19 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
эттаAndyKuvaldinЗдравствуйте. Подскажите пожалуйста как создать переменную в postgres... it depends --в каком месте, т.е. в каком языке [из кучи возможных] если про sql и переменные сеанса -- http://www.sql.ru/forum/actualsearch.aspx?search=?????????? ??????&sin=0&st=t&bid=7&a=&ma=0&dt=-1&s=1&so=1 Язык SQL Postgre. Среда SQL Editor в pgAdmin III. Надпись "declare @a int;" приводит к ошибке, которая описана в первом посте темы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 08:59 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldin, Расскажите, какую задачу Вы хотите решать. Может быть следует рассмотреть задачу с более высокого уровня. Прямо сейчас Вы пытаетесь впихнуть странные языковые конструкции, не прудусмотренные средой, в очень интересные места. С заранее известным результатом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 09:11 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
/\/\/\/\/\/\AndyKuvaldin, Расскажите, какую задачу Вы хотите решать. Может быть следует рассмотреть задачу с более высокого уровня. Прямо сейчас Вы пытаетесь впихнуть странные языковые конструкции, не прудусмотренные средой, в очень интересные места. С заранее известным результатом. Задача: объявить переменную a типа integer, задать ей значение. объявить переменную b типа integer, задать ей значение. объявить переменную c типа integer и записать в неё результат сложения 2 переменных a и b. после чего вывести на экран значения всех 3 переменных. Сделать это в рамках pgAdmin III в SQL Editor. Например в MS SQL это выглядело бы следующим образом: declare @a int; declare @b int; declare @c int; set @a = 1; set @b = 2; set @c = @a + @b; select @a; select @b; select @c; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 09:39 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldin, оператор DO и использование Pl/pgsql просто в sql переменных в postgreSQL нет (и я с большим трудом себе могу представить ситуацию когда мне нужны переменные а не DO+pl/pgsql) --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 09:44 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
Maxim BogukAndyKuvaldin, оператор DO и использование Pl/pgsql просто в sql переменных в postgreSQL нет (и я с большим трудом себе могу представить ситуацию когда мне нужны переменные а не DO+pl/pgsql) --Maxim Boguk www.postgresql-consulting.ru Если не трудно как переписать выше указанные код с использованием оператора do. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 09:56 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
Maxim BogukAndyKuvaldin, оператор DO и использование Pl/pgsql просто в sql переменных в postgreSQL нет (и я с большим трудом себе могу представить ситуацию когда мне нужны переменные а не DO+pl/pgsql) --Maxim Boguk www.postgresql-consulting.ru Вот я например смотрю ссылку http://www.techonthenet.com/postgresql/declare_vars.php Там синтаксис объявления переменной точно так же как пишу я но почему то не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 10:02 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldin, Потому что Вы смотрите в какое-то странное место. Смотреть нужно сюда . По поводу анонимного блока (оператора DO) смотреть нужно сюда . Там же есть развернутый пример. Кстати, где у PG находится экран, да и вообще что это такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 10:46 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
/\/\/\/\/\/\AndyKuvaldin, Потому что Вы смотрите в какое-то странное место. Смотреть нужно сюда . По поводу анонимного блока (оператора DO) смотреть нужно сюда . Там же есть развернутый пример. Кстати, где у PG находится экран, да и вообще что это такое? Подключившись к базе на панели приборов открывается доступ к значку "лупы с надписью внутри SQL". Там есть возможность написания простейших запросов как к базе данных к которой непосредственно подключен в данный момент так и просто какие то вещи предусмотренные T-SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 11:18 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
do $$ declare a int; begin set a = 1; edn$$; select a; При таком синтаксисе написания кода выдаётся ошибка типа: ОШИБКА: неожиданный конец определения функции в конце LINE 4: edn$$; ^ ********** Ошибка ********** ОШИБКА: неожиданный конец определения функции в конце SQL-состояние: 42601 Символ: 43 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 11:21 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldin <> Вот я например смотрю ссылку http://www.techonthenet.com/postgresql/declare_vars.php Там синтаксис объявления переменной точно так же как пишу я но почему то не работает. начнём от печки : по ссылке написано буквально: авторThe syntax to declare a variable in PostgreSQL is: Код: plaintext -- это буквально неверно. Поскольку это синтаксис объявления пеерменной не в postgreSQL, а в коннкретном процедурном языке, под названием plpgsql. В PostgreSQL на процедурных языках пишутся хранимые процедуры (==функции) , частным случаем которых являются "анонимные блоки" (без параметрически функции, returning void), вызываемые посредством SQL оператора DO. Т.е. в уважающем себя букваре должно быть что-то типа авторThe syntax to declare a variable in plpgsql functions (or in plpgsql anonimous blocks) in PostgreSQL is: blahblahblah Пока вы не поймете, что вы все время в разных контекстах -- вы будете мыкаться. отличие от mssql в том -- что там всё (если верно помню) -- TSQL, и внутри процедур, и снаружи. и он -- один. Через SET / set_config вам доступно установление переменных сеанса, которые вычитываются с current_setting()-ом Код: sql 1. 2. 3. 4. 5. 6. 7. всё это вы могли для себя выяснить поиском, как предлагалось. За пределами функций объявленные в них переменные не видны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 11:52 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldin<> Язык SQL Postgre. Среда SQL Editor в pgAdmin III. СУБД называется postgres-ql. (как наследник ingres) язык же называется просто "SQL" (его Postgresql-ный диалект). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 11:59 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
эттаAndyKuvaldin<> Язык SQL Postgre. Среда SQL Editor в pgAdmin III. СУБД называется postgres-ql. (как наследник ingres) язык же называется просто "SQL" (его Postgresql-ный диалект). Ежу понятно. Но все конструкции, которые вы описали, они не о чем. Вы льёте воду не желая отвечать на конкретный поставленный вопрос. Вы начинаете рассказывать сказки, которые понятны, но не дают сложить 2 числа и вывести на экран их сумму.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 12:26 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
do $$ declare a int; begin select 2 into a; DROP TABLE IF EXISTS tmp_table; CREATE TABLE tmp_table AS select * from public.services s where s.nzp_serv = a END $$; select * from tmp_table; DROP TABLE IF EXISTS tmp_table; Подскажите в чём ошибка: ОШИБКА: неожиданный конец определения функции в конце LINE 7: END $$; ^ ********** Ошибка ********** ОШИБКА: неожиданный конец определения функции в конце SQL-состояние: 42601 Символ: 165 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 12:55 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldinэттапропущено... СУБД называется postgres-ql. (как наследник ingres) язык же называется просто "SQL" (его Postgresql-ный диалект). Ежу понятно. Но все конструкции, которые вы описали, они не о чем. Вы льёте воду не желая отвечать на конкретный поставленный вопрос. Вы начинаете рассказывать сказки, которые понятны, но не дают сложить 2 числа и вывести на экран их сумму....ежу как раз понятно а вам -- с очевидностью, нет таки вся эта возня с импорт-замещением и дрейфом в наши края быдлокодеров из быдлоsql очень доставляют. ниакого экрана у sql нет. это текстовый интерфейс. экраны есть у клиентов этого интерфейса, например у пжодмина. а "ниочём" -- это "андикувалдин", и его неспособность понять, как связаны контексты , и что надо проделать в его клиенте, чтобы все это увидеть. вам объяснили, что в SQL контексте переменных, в том виде, в каком вы привыкли в MS-SQL нет. есть возможность задать параметры сеанса [SQL], причем -- собственные (а не только предопределенные) Код: sql 1. 2. 3. 4. вам объяснили, что привычные вам переменные в postgresql являются переменными функций (их объявление зависит от процедурного языка, например если процуедура написана на SQL то никаких иных переменныхх, кроме входящих параметров, у неё быть не может) для plpgsql вам тоже приводили пример. По завершении оператора DO переменные анонимного блока не видны в SQL контексте, "выводите их на экран" пока ещё не покинули контекст plpgsql (например -- нотификацией, или же открытием курсора (что сложнее -- там еще надо охватывающей транзакцией рулить) ), иначе никак. Ну и еще -- освойте профессию менеджера клининговой аппаратуры, желательно -- уличной. Это вам, очевидно, ближе. а водилы снегоуборщиков нынче -- вообще нарасхват ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:05 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldindo $$ declare a int; begin select 2 into a; DROP TABLE IF EXISTS tmp_table; CREATE TABLE tmp_table AS select * from public.services s where s.nzp_serv = a END $$; select * from tmp_table; DROP TABLE IF EXISTS tmp_table; Подскажите в чём ошибка: ОШИБКА: неожиданный конец определения функции в конце LINE 7: END $$; ^ ********** Ошибка ********** ОШИБКА: неожиданный конец определения функции в конце SQL-состояние: 42601 Символ: 165 пропущен ; в строке CREATE TABLE tmp_table AS select * from public.services s where s.nzp_serv = a ; PS: просто a:=2 тоже работает вместо select 2 into a; --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:06 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
Maxim BogukAndyKuvaldindo $$ declare a int; begin select 2 into a; DROP TABLE IF EXISTS tmp_table; CREATE TABLE tmp_table AS select * from public.services s where s.nzp_serv = a END $$; select * from tmp_table; DROP TABLE IF EXISTS tmp_table; Подскажите в чём ошибка: ОШИБКА: неожиданный конец определения функции в конце LINE 7: END $$; ^ ********** Ошибка ********** ОШИБКА: неожиданный конец определения функции в конце SQL-состояние: 42601 Символ: 165 пропущен ; в строке CREATE TABLE tmp_table AS select * from public.services s where s.nzp_serv = a ; PS: просто a:=2 тоже работает вместо select 2 into a; --Maxim Boguk www.postgresql-consulting.ru большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:32 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk do $$ declare a decimal(16,6); b decimal(16,6); c decimal(16,6); tarif decimal(16,6); payment decimal(16,6); begin a := 2; b := 3; c := b - a; tarif = select top 1 t.tarif from public.services s join tagil_data.tarif t on t.nzp_serv = s.nzp_serv where s.nzp_serv = 2 order by t.tarif desc; payment = c * tarif; DROP TABLE IF EXISTS tmp_table; CREATE TABLE tmp_table(c int); insert into tmp_table(c) values(payment); END $$; select * from tmp_table; как присвоить переменной значение возвращаемое из таблицы в результате селекта? И можно ли не создавая временной таблицы вывести значение переменной payment сразу? Что-то типо select payment; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:48 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldin, Код: sql 1. 2. 3. 4. мальчик, читай таки доку, или читай примеры -- они тут в количествах на форуме болтаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:54 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldinкак присвоить переменной значение возвращаемое из таблицы в результате селекта? Как указано в документации AndyKuvaldinИ можно ли не создавая временной таблицы вывести значение переменной payment сразу? Да, можно AndyKuvaldinЧто-то типо select payment; Нет, не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:12 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
do $$ declare a decimal(16,6); b decimal(12,2); c decimal(16,6); d decimal(12,2); e decimal(16,6); f decimal(16,6); begin a := 2,333333; b := 3,99; e := 3,999999; c := a * b; d := a * b; f := a * e; DROP TABLE IF EXISTS tmp_table; CREATE TABLE tmp_table(a decimal(16,6), b decimal(12,2), c decimal(16,6), d decimal(12,2), e decimal(16,6), f decimal(16,6)); insert into tmp_table(a, b, c, d, e, f) values(a, b, c, d, e, f); END $$; select * from tmp_table; подскажите пожалуйста в чем ошибка. Описание ошибки: ОШИБКА: запрос "SELECT 2,333333" вернул 2 строки CONTEXT: функция PL/pgSQL inline_code_block, строка 5, оператор присваивание ********** Ошибка ********** ОШИБКА: запрос "SELECT 2,333333" вернул 2 строки SQL-состояние: 42601 Контекст: функция PL/pgSQL inline_code_block, строка 5, оператор присваивание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 10:13 |
|
||
|
Создание переменных
|
|||
|---|---|---|---|
|
#18+
AndyKuvaldin подскажите пожалуйста в чем ошибка. ошибка в генах. вопросы к родителям Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 10:21 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38894939&tid=1998128]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
192ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 540ms |

| 0 / 0 |
