2011-12-14 2 views
0

MySQL ГУРУ,MySQL DECLARE Синтаксиса (конвертирование из MSSQL)

Я преобразование некоторых отчетов из базы данных MSSQL для использования на базе данных MySQL, и, кажется, не понимает, как DECLARE работает в MySQL. Ниже приведен код SQL для отчета, как работает в MSSQL. Я читал, что DECLARE можно использовать только в вложенной функции, я верю, но это просто не подходит для меня.

Текущий отчет SQL: (я анализирую & заменить значения тока & отложенное из моего приложения кода)

DECLARE @Current int; 
DECLARE @Pending int; 

SET @Current = [1]; 
SET @Pending = [3]; 

Select Ticket.TIcketID, 
ISNULL((Select LocationName from Location where LocationID = Ticket.SiteCurrentLocation), 'Invalid Location') as [Current Location], 
ISNULL((Select LocationName from Location where LocationID = Ticket.SitePendingLocation), 'Invalid Location') as [Pending Location] 
from Ticket 

where 
(SitePendingLocation > 0 AND SitePendingLocation <> SiteCurrentLocation) AND 
(SiteCurrentLocation = @Current OR @Current = 0) AND 
(SitePendingLocation = @Pending OR @Current = 0) 

Любое понимание?

Спасибо - Andrew

EDIT

Рабочая, преобразованный сценарий - что это может помочь другим:

SET @Current = '1'; 
SET @Pending = '1'; 

Select Ticket.TIcketID, 
IFNULL((Select LocationName from Location where LocationID = Ticket.SiteCurrentLocation), 'Invalid Location') as `Current Location`, 
IFNULL((Select LocationName from Location where LocationID = Ticket.SitePendingLocation), 'Invalid Location') as `Pending Location` 
from Ticket 

where 
(SitePendingLocation > 0 AND SitePendingLocation <> SiteCurrentLocation) AND 
(SiteCurrentLocation = @Current OR @Current = 0) AND 
(SitePendingLocation = @Pending OR @Current = 0) 
+1

Вы можете использовать SET самостоятельно (без DECLARE) или заменить @ на _ (или без префикса). См. Http://stackoverflow.com/questions/763718/whats-wrong-with-this-mysql-statement-declare-id-int для аналогичного вопроса. – dash

+0

Спасибо @dash - нет необходимости в 'DECLARE' вообще, отлично! Теперь, чтобы понять, что ему не нравится в 'ISNULL' ... – Fuginator

+0

Это IFNULL ;-) - http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html# function_ifnull – dash

ответ

1

Вы можете использовать либо SET само по себе (без DECLARE) или заменить @ с _ или аналогичным (или даже без префикса).

Я вообще Приставка шахты с _

См What's wrong with this MySQL statement: DECLARE @ID INT на аналогичный вопрос

Что касается Вашего другой комментарий, это IFNULL в MySql - См http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_ifnull

Это всегда маленькие вещи ...: -)

Смежные вопросы