2015-08-27 66 views
1

首先,我很抱歉,我是SQL新手。變量的多個結果 - SQL

我想弄清楚如何爲一個已定義的變量輸入多個值。

目前我正在使用以下;

UNDEFINE MPAN_CORE 
SELECT customer.MPAN.j0003 AS MPAN, customer.AGENT.j0183 AS DA, customer.AGENT.j0205 AS DC, customer.agent.j0178 AS MOP 
FROM customer.mpan 
    INNER JOIN customer.agent 
     ON customer.mpan.uniq_id = customer.agent.mpan_lnk 
WHERE customer.mpan.j0003 = '&&MPAN_CORE' 

基本上我希望能夠爲客戶MPAN輸入多個值,並有多個結果。目前我必須一次輸入一個MPAN。

不知道這是否甚至可能,也許就像使用一個字符來劃分我的輸入值一樣簡單?

任何幫助深表感謝

感謝

+0

我永遠不會放棄SQL Developer或SQL * Plus中以一個互動的UI給最終用戶。你想達到什麼目的?價值從哪裏來?應用?另外**等號運算符**'='不適用於值列表,您需要使用** IN **運算符。 –

+0

我有一個值列表(MPAN),我希望鏈接的值(DA,DC,MOP)從代理表中返回。但是現在我不得不一次一個這樣做。 –

+0

然後您需要使用** IN **列表。你可以在查詢中硬編碼這些值嗎? –

回答

0

WHERE customer.mpan.j0003 = '& & MPAN_CORE'

你不能有平等運營商=多個值。對於多個值,您需要使用IN列表

例如,

SQL> SELECT empno, deptno FROM emp WHERE ename IN ('SMITH','KING','SCOTT'); 

    EMPNO  DEPTNO 
---------- ---------- 
     7369   20 
     7788   20 
     7839   10 

SQL> 

或者,使用替代變量

SQL> SELECT empno, deptno FROM emp WHERE ename IN (&a); 
Enter value for a: 'SMITH','KING','SCOTT' 
old 1: SELECT empno, deptno FROM emp WHERE ename IN (&a) 
new 1: SELECT empno, deptno FROM emp WHERE ename IN ('SMITH','KING','SCOTT') 

    EMPNO  DEPTNO 
---------- ---------- 
     7369   20 
     7788   20 
     7839   10 

SQL>