1

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 语句解决。这个问题需要结束。

4

2 回答 2

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} !!!

于 2013-09-02T03:11:59.840 回答
0

我认为这个查询会做同样的事情:

SELECT C.* 
FROM CUSTOMER C 
INNER JOIN MERCHANT M ON C.MERCHANTID = M.ID AND 
                         C.ISFIRST = M.ISFIRST AND
                         M.PHONE = :1;
于 2013-09-02T03:55:03.240 回答