Как использовать выбор параметров SELECT в запросах MySQL? - PullRequest
0 голосов
/ 13 ноября 2018

Я перенес MSSQL DB в MySQL и столкнулся с синтаксисом, который нигде не могу найти, и мне нужна эта помощь.Все вопросы о «параметрах MySQL» связаны с «select * from mytable where id = @id», но я ищу следующий синтаксис:

SELECT @MyParam = MyValue FROM MyTable

Пока «SELECT MyValue FROM MyTable» возвращает значения, выполняетсяВыше @MyParam запрос возвращает значения NULL.

Из предыдущих ответов я вижу, что в отличие от MSSQL, в MySQL параметры не предопределены ни для какого типа данных.

Что мне здесь не хватает?

THX

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

При преобразовании процедур MS SQL Server в процедуры MySQL лучше использовать локальные переменные, объявленные с DECLARE.

Переменные @var являются определяемыми пользователем переменными, а область действия - это процесс.Поэтому, если ваши процедуры вызывают другие процедуры, значение переменной может измениться, тогда как локальные переменные не изменятся.Локальные переменные также имеют определенный тип.

Чтобы преобразовать синтаксис MS SQL Server

SELECT @MyParam = MyValue FROM MyTable

в MySQL, используйте:

DECLARE vMyParam int;
SELECT MyValue INTO vMyParam FROM MyTable;

Формат:

SELECT @MyParam := MyValue FROM MyTable

вызовет дополнительный набор результатов из процедуры, так что это, вероятно, то, что вам не нужно.

Вы можете использовать формат :=, когда используете команду SET, где вы явно задаетезначение для переменной.

SET vMyParam = 10;
0 голосов
/ 13 ноября 2018

Вам нужно использовать оператор := вместо =, когда вы присваиваете значение пользовательской переменной в предложении SELECT. Бывший оператор присваивания; в то время как последний является оператором сравнения.

SELECT @MyParam := MyValue FROM MyTable

Однако, если вы используете предложение SET, вы можете использовать либо =, либо :=. Из документов :

Для SET в качестве оператора присваивания можно использовать = или: =.

Больше из документов:

При выполнении задания таким образом (используя SELECT), вы должны использовать : = как оператор присваивания; = рассматривается как оператор сравнения в операторах, отличных от SET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...