QUERY是自我解释的。
DECLARE
ID NUMBER (10);
ISFIRST NUMBER (1);
BEGIN
SELECT M.ID, M.ISFIRST
INTO ID, ISFIRST
FROM MERCHANT M
WHERE M.PHONE = :1;
IF (ISFIRST=1) THEN
SELECT * FROM CUSTOMER C WHERE C.ISFIRST=1 AND C.MERCHANTID = ID;
ELSE
SELECT * FROM CUSTOMER C WHERE C.ISFIRST=0 AND C.MERCHANTID = ID;
END IF;
END;
这个查询给了我“PLS-00428:这个SELECT语句中应该有一个INTO子句”。 我需要根据MERCHANT.ISFIRST和MERCHANT.ID从CUSTOMER表中选择数据。 任何解决方法或解释出错的地方都将不胜感激。
PS:问题是通过UNION ALL语句解决的。这个问题需要关闭。
答案 0 :(得分:2)
SELECT
语句没有任何错误,除了您没有与他们一起做任何事情。我的意思是最后两个。你想让他们做什么?产生一个将被丢弃的结果? PL / SQL不允许它。
如果这是正确的,您可以选择一个字段并执行SELECT {aField} INTO {aVariable}
而不是SELECT *
。
IF( ISFIRST = 1 ) THEN
SELECT {aField} INTO {aVariable} FROM CUSTOMER C WHERE C.ISFIRST=1 AND C.MERCHANTID = ID;
ELSE
SELECT {aField} INTO {aVariable} FROM CUSTOMER C WHERE C.ISFIRST=0 AND C.MERCHANTID = ID;
END IF;
不要忘记宣布{aVariable} !!!
答案 1 :(得分:0)
我认为这个查询会做同样的事情:
SELECT C.*
FROM CUSTOMER C
INNER JOIN MERCHANT M ON C.MERCHANTID = M.ID AND
C.ISFIRST = M.ISFIRST AND
M.PHONE = :1;