Небытие — ничто, бытие — мука (Аполлоний Тианский).

Как конвертировать хранимые процедуры из MS SQL Server в MySQL

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Статья опубликована: 15 января 2017

Как конвертировать хранимые процедуры из MS SQL Server в MySQL
При переходе из MS SQL в MySQL, кроме миграции данных, вы должны также перенести код приложения, который находится в базе данных.

Ранее мы обсуждали, как перенести MS SQL в базу данных MySQL с помощью инструмента WorkSQL Workbench.

В рамках миграции, он будет только конвертировать таблицы и копировать данные, но он не будет преобразовывать триггеры, представления и хранимые процедуры. Вы должны вручную преобразовать их в базе данных MySQL.

Для выполнения этого преобразования вручную, вы должны понимать основные различия между запросами MS SQL и MySQL.

Во время моего преобразования из Microsoft SQL Server в базу данных MySQL, я столкнулся со следующими операторами и запросами MS SQL, которые не были совместимы с MySQL, и я должен был преобразовать их, как показано ниже.

1. Создание хранимых процедур. Синтаксис

Основной синтаксис создания хранимых процедур отличается.

MS SQL Stored, синтаксис создания процедуры:

 

для MySQL синтаксис создания процедуры:

 

2. Создание временных таблиц

В коде MS SQL, я создал несколько временных таблиц, которые требуются для применения. Синтаксис для создания временной таблицы различается, как показано ниже.

MS SQL синтаксис создания временной таблицы:

 

MySQL синтаксис создания временной таблицы:

 

3. Синтаксис IF

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

MS SQL условие IF Синтаксис:

 

MySQL условие IF Синтаксис:

 

4. Состояние IF EXIST

Другое общее использование, если условие, проверить, вернулся ли в запросе какие-либо строки или нет; и если он возвращает несколько строк, сделать что-то. Для этого я использовал IF EXISTS в MS SQL, который должен быть преобразован в MySQL команды IF, как описано ниже.

MS SQL IF EXITS Пример:

 

MySQL эквивалент выше, используя при выполнении условия:

 

5. Функции даты

Использование функций данных внутри хранимой процедуры является довольно распространенным явлением. В следующей таблице приведены различия между MS SQL и MySQL данных, связанных функций.

MS SQL ServerMySQL Server
GETDATE( )NOW( )
SYSDATE( )
CURRENT_TIMESTAMP( )
GETDATE( ) + 1NOW( ) + INTERVAL 1 DAY
CURRENT_TIMESTAMP +INTERVAL 1 DAY
DATEADD(dd, -1, GETDATE())ADDDATE(NOW(), INTERVAL -1 DAY)
CONVERT(VARCHAR(19),GETDATE())DATE_FORMAT(NOW(),’%b %d %Y %h:%i %p’)
CONVERT(VARCHAR(10),GETDATE(),110)DATE_FORMAT(NOW(),’%m-%d-%Y’)
CONVERT(VARCHAR(24),GETDATE(),113)DATE_FORMAT(NOW(),’%d %b %Y %T:%f’)
CONVERT(VARCHAR(11),GETDATE(),6)DATE_FORMAT(NOW(),’%d %b %y’)

6. Объявление переменных

В MS SQL хранимые процедуры, вы можете объявлять переменные где-то между “Begin” и “end”

Однако в MySql вам придется объявить их только после заявления хранимой процедуры “begin”. Декларация переменной в любой точке между не допускается.

7. Выберите первые N записей

В MS SQL, вы будете использовать SELECT, TOP, если вы хотите выбрать только первые несколько записей. Например, чтобы выбрать 1-ые 10 записей, вы сделаете следующее:

 

В MySQL, вам придется использовать LIMIT вместо TOP, как показано ниже.

 

8. Преобразование целого числа в Char

В MS SQL вы выполните следующие действия (функции Convert), чтобы преобразовать целое число в символ.

 

В MySQL, вы будете использовать функцию CAST для преобразования целого на символ, как показано ниже.

 

9. Оператор конкатенации

Если вы манипулируете множеством данных внутри хранимой процедуры, вы можете использовать выполнение некоторых конкатенации строк.

В MS SQL оператор конкатенации + символ. Пример такого использования показан ниже.

 

В MySQL, если вы используете режим AnSi, то, он такой же, как и в MS SQL. т.е. + символ, будет работать для конкатенации.

Но, в режиме по умолчанию, в MySQL, мы должны использовать функцию CONCAT( “str1”, “str2”, “str3”.. “strN”).


Читайте также

    Добавить комментарий

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close