2017-06-13 120 views
0

我想选择一个计数,然后插入如下变量v_voyage1_orders20,有没有人知道这是否可能和正确的语法?进入声明的级联/追加

SELECT COUNT(DISTINCT KLIENTS_ORDER_ID) 
INTO CONCAT(v_voyage || v_lcntr || _orders20) 
+0

你不能通过concat创建一个变量名。你必须定义它的硬代码或使用集合。除此之外,还提供样本数据和您尝试过的查询。 – Debabrata

+0

嗨Debabrata,我想循环通过从1-6获得v_voyage1_orders20,v_voyage2_orders20等什么是最好的方式来做到这一点? –

+0

这将有助于更好地了解情况,如果提供样本数据和您的预期输出。 – Debabrata

回答

0

正如评论中指出的那样,我们确实需要更多信息/上下文才能得到正确的答案。

然而,它是一个安静的早晨,所以我猜测了一下。

这将使您将每个klient_no与每个klient的不同订单数统一到一个数组中。

DECLARE 
    TYPE klient_orders_rt IS RECORD 
    (klient_no klient_order.klient_no%TYPE, 
    klient_ord_count NUMBER); 
    TYPE order_count_t IS TABLE OF klient_orders_rt; 
    l_order_count order_count_t; 
BEGIN 
    SELECT klient_no, COUNT(DISTINCT klints_order_id) 
    BULK COLLECT INTO l_order_count 
    FROM klient_order 
    GROUP BY klient_no; 

    FOR i IN 1..l_order_count.COUNT LOOP 
    DBMS_OUTPUT.PUT_LINE('RECORD '||TO_CHAR(i)||' : '||l_order_count(i).klient_no||' Num orders: '||TO_CHAR(l_order_count(i).klient_ord_count)); 
    END LOOP; 
END; 

这可能会给你一些接近你的东西,但技术无疑是值得了解的。