我尝试在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语句...请帮助我......
答案 0 :(得分:3)
T-SQL支持一些程序语句,如IF。 PostgreSQL不支持它,所以你不能简单地将你的查询重写为postgres。有时您可以使用Igor的解决方案,有时您可以使用plpgsql(函数),有时您必须修改应用程序并将过程代码从服务器移动到客户端。
答案 1 :(得分:1)
尝试类似
的内容SELECT *
FROM Kategoriler
UNION ALL
SELECT *
FROM Adminler
WHERE NOT EXIST (SELECT * FROM Kategoriler WHERE KategoriId = 119)
仅在Kategoriler
和Adminler
具有相同结构时才有效。否则,您需要指定字段列表而不是*
答案 2 :(得分: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;