2013-05-27 4 views
0

я пытаюсь запрос, который работает на MSSQL однако не работает PostGreSQL ...PostgreSQL, если еще ошибка синтаксиса

SQL Query является ..

IF EXISTS (SELECT * FROM Kategoriler WHERE KategoriId = 119) 
    BEGIN 
    SELECT * FROM Kategoriler 
    END 
    ELSE 
    SELECT * FROM Adminler 

я искал его, и я нашел в StackOverflow

DO 
    $BODY$ 
    BEGIN 
     IF EXISTS (SELECT 1 FROM orders) THEN 
       DELETE from orders; 
     ELSE 
       INSERT INTO orders VALUES (1,2,3); 
     END IF; 
    END; 
    $BODY$ 

, но я не хочу использовать DO или $ тела и т.д ... Я не хочу, чтобы написать какую-либо функцию или другой и т.д. ...

я хочу написать, только если другое заявление в PostGreSQL ... Пожалуйста, помогите мне ...

+0

Ваш первый блок кода не является SQL-запросом. Это процедура SQL, как и второй блок. –

+0

то, что вы просите, в PostgreSQL невозможно. Однако, если вы можете сказать нам, какова ваша цель, чего вы пытаетесь достичь в конечном счете, мы можем, возможно, предоставить альтернативу. – Flimzy

+0

В будущем, пожалуйста, всегда указывайте свою ** точную версию PostgreSQL ** в вопросах; см. 'select version()'. –

ответ

1

Попробуйте что-то вроде

SELECT * 
FROM Kategoriler 
UNION ALL 
SELECT * 
FROM Adminler 
WHERE NOT EXIST (SELECT * FROM Kategoriler WHERE KategoriId = 119) 

будет работать только тогда, когда Kategoriler и Adminler имеют одинаковую структуру. В противном случае вам нужно указать список полей вместо *

3

T-SQL поддерживает некоторый процедурный оператор, такой как IF. PostgreSQL не поддерживает его, поэтому вы не можете просто переписать свой запрос на postgres. Когда-нибудь вы можете использовать решение Игоря, когда-нибудь вы сможете использовать plpgsql (функции), а когда-нибудь вам нужно изменить свое приложение и переместить процедурный код с сервера на клиент.

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