Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 December 07

И

Игорь in SqlCom.ru - Стиль жизни SQL
Vova
нашел:
You cannot use IF in an SQL statement. You can only use it in a stored procedure or a function.

а в mysql можно как-то сделать условие на коммит?
IF EXISTS в mysql есть?
источник

И

Игорь in SqlCom.ru - Стиль жизни SQL
и да - тут чат по MSSQL
источник

А

Андрій in SqlCom.ru - Стиль жизни SQL
Игорь
IF EXISTS в mysql есть?
Так там вобще условие в скрипте нельзя
источник

А

Андрій in SqlCom.ru - Стиль жизни SQL
Vova
нашел:
You cannot use IF in an SQL statement. You can only use it in a stored procedure or a function.

а в mysql можно как-то сделать условие на коммит?
Ну сделай процедуру
источник

V

Vova in SqlCom.ru - Стиль жизни SQL
Андрій
Ну сделай процедуру
DELIMITER //
CREATE PROCEDURE `proc_IF` (IN param1 INT)
BEGIN
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET @max_dimensinon = 0;
SET @max = 'max';
SELECT @max_dimensinon := MAX(dimension) FROM Cycles;
INSERT INTO Cycles(ID_C, dimension, name) VALUES (6, @max_dimensinon, @max);
IF @max_dimensinon > 3000 then
commit;
else
rollback;
END IF;
END //
не работает
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Vova
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET @max_dimensinon = 1;
SET @max = 'max';
SELECT @max_dimensinon := MAX(dimension) FROM Cycles;
INSERT INTO Cycles(ID_C, dimension, name) VALUES (6, @max_dimensinon, @max);
IF @max_dimensinon > 3000
rollback
ELSE
commit
Зачем ты везде пишешь ; ?

оно не нужно
источник

А

Андрій in SqlCom.ru - Стиль жизни SQL
Vova
DELIMITER //
CREATE PROCEDURE `proc_IF` (IN param1 INT)
BEGIN
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET @max_dimensinon = 0;
SET @max = 'max';
SELECT @max_dimensinon := MAX(dimension) FROM Cycles;
INSERT INTO Cycles(ID_C, dimension, name) VALUES (6, @max_dimensinon, @max);
IF @max_dimensinon > 3000 then
commit;
else
rollback;
END IF;
END //
не работает
Ну привел бы ошибку мб можно было б подсказать.
А так может ты в блокнот пишешь, вот и не работает
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Vova
DELIMITER //
CREATE PROCEDURE `proc_IF` (IN param1 INT)
BEGIN
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET @max_dimensinon = 0;
SET @max = 'max';
SELECT @max_dimensinon := MAX(dimension) FROM Cycles;
INSERT INTO Cycles(ID_C, dimension, name) VALUES (6, @max_dimensinon, @max);
IF @max_dimensinon > 3000 then
commit;
else
rollback;
END IF;
END //
не работает
БЛМТЬ ты что-то в заголовке чата читаешь или чё?
источник

А

Андрій in SqlCom.ru - Стиль жизни SQL
Да и где тут объявление переменных...
источник

V

Vova in SqlCom.ru - Стиль жизни SQL
Заработало. Всем спасибо.
источник

V

Vova in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Зачем ты везде пишешь ; ?

оно не нужно
иначе компилятор ругается
источник
2020 December 08

g

greeninsania in SqlCom.ru - Стиль жизни SQL
Vova
иначе компилятор ругается
Transact-SQL statement terminator. Although the semicolon isn't required for most statements in this version of SQL Server, it will be required in a future version.
https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/transact-sql-syntax-conventions-transact-sql?view=sql-server-ver15
источник

g

greeninsania in SqlCom.ru - Стиль жизни SQL
Оп, не туда)
источник

g

greeninsania in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Зачем ты везде пишешь ; ?

оно не нужно
Про ;
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
greeninsania
Про ;
Не смог найти, но на dbareactions было " ;  - It's no a good code, it's a law."
источник

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Зачем ты везде пишешь ; ?

оно не нужно
потому что это best prctice (ANSI и рекоменданция майки) https://github.com/ktaranov/sqlserver-kit/blob/master/SQL%20Server%20Name%20Convention%20and%20T-SQL%20Programming%20Style.md#semicolon
также если в длинной портянке есть WITH CTE словишь ошибку
источник

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
Прикольная задумка (еще обещают и в open source) от Amazon: https://babelfish-for-postgresql.github.io/babelfish-for-postgresql/

> Babelfish for PostgreSQL is an Apache-2.0 open source project that adds a Microsoft SQL Server-compatible end-point to PostgreSQL to enable your PostgreSQL database to understand the SQL Server wire protocol and commonly used SQL Server commands. With Babelfish, applications that were originally built for SQL Server can work directly with PostgreSQL, with little to no code changes, and without changing database drivers.
источник

YS

Yaroslav Schekin in SqlCom.ru - Стиль жизни SQL
Konstantin Taranov
Прикольная задумка (еще обещают и в open source) от Amazon: https://babelfish-for-postgresql.github.io/babelfish-for-postgresql/

> Babelfish for PostgreSQL is an Apache-2.0 open source project that adds a Microsoft SQL Server-compatible end-point to PostgreSQL to enable your PostgreSQL database to understand the SQL Server wire protocol and commonly used SQL Server commands. With Babelfish, applications that were originally built for SQL Server can work directly with PostgreSQL, with little to no code changes, and without changing database drivers.
Было подобное уже (и неоднократно, если я правильно помню).
Вопрос в том, насколько хорошо сделают на этот раз, IMHO.
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Вчера только это обсуждали. Для минорных рабочих нагрузок пойдёт, там где производительность не очень важна.
источник

ДС

Дмитрий Степанов... in SqlCom.ru - Стиль жизни SQL
Konstantin Taranov
Прикольная задумка (еще обещают и в open source) от Amazon: https://babelfish-for-postgresql.github.io/babelfish-for-postgresql/

> Babelfish for PostgreSQL is an Apache-2.0 open source project that adds a Microsoft SQL Server-compatible end-point to PostgreSQL to enable your PostgreSQL database to understand the SQL Server wire protocol and commonly used SQL Server commands. With Babelfish, applications that were originally built for SQL Server can work directly with PostgreSQL, with little to no code changes, and without changing database drivers.
останется портировать с десяток системных view и может быть студия заведётся =)
источник