0

我尝试在 mssql 上运行但不运行 postgreSQL 的查询...

SQL 查询是..

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 或 $body 等...我不想编写任何函数或其他等...

我只想在 postgreSQL 中写 if else 语句...请帮助我...

4

3 回答 3

3

T-SQL 支持一些过程语句,如 IF。PostgreSQL 不支持它,所以你不能简单地将查询重写为 postgres。有时您可以使用 Igor 的解决方案,有时您可以使用 plpgsql(函数),有时您必须修改您的应用程序并将程序代码从服务器移动到客户端。

于 2013-05-27T18:41:39.320 回答
1

尝试类似的东西

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

只有在结构相同的情况Kategoriler下才有效。Adminler否则,您需要指定字段列表而不是*

于 2013-05-27T18:19:25.857 回答
0

就我而言,我需要知道是否存在记录。

我不得不写一个函数

CREATE OR REPLACE FUNCTION public.pro_device_exists(vdn character varying)
 RETURNS boolean
 LANGUAGE plpgsql
AS $function$
BEGIN

    IF EXISTS (SELECT 1 FROM tags WHERE device_name = upper(vdn)) THEN
          return true;
    ELSE 
          return false;
    END IF;
END; $function$

然后我可以在我的代码中调用这个函数......只是我代码的一部分

            if pro_device_exists(vdn) then
                update tags
                set device_id = 11 where device_id = pro_device_id(vdn) and tag_type=10;            
                update tags
                set device_id = pro_device_id(vdn) where tag_id = vtag_id;
                vmsg = (select 'Device Now set to ' || first_name || ' ' || last_name from tags where tag_id=vtag_id);
                vaction = 'Refresh Device Data';
            else
                vmsg = 'Device is not registered on this system';
                vaction = 'No Nothing';
            end if;
于 2019-01-21T20:38:29.533 回答