2017-10-08 3 views
0

Nouveau sur oracle/crapaud.Oracle Déclarez la variable et utilisez-la dans une autre requête de sélection.

Je définis une variable et insère sa valeur dans select. Après avoir défini sa valeur, je l'utilise dans une autre instruction select. Mais cela me donne l'erreur et clause INTO est attendue dans ce SELECT

declare maxLineNo number := 0; 

BEGIN 
select Max(b.Line_No) into maxLineNo FROM Brokerage b WHERE b.External_App_Id = 3720  AND b.Account_Id = '16970' ; 

SELECT b.External_App_Id -- this select giving erro 
     , maxLineNo + 1 
     , b.Currency 
     , '' 
     , CAST(SUM(b.Brokerage_Amt) as VARCHAR2(17)) 
     , '' 
     , '' 
     , 1003 -- 1003 for Report summary 
     , '' 
    FROM Brokerage b 
    WHERE b.External_App_Id = 3720 
    GROUP BY External_App_Id, B.CURRENCY 
    ORDER BY 2; 

DBMS_OUTPUT.PUT_LINE(maxLineNo); -- this is giving value 
end; 
+1

dans le bloc PL/SQL, 'select' fonctionne uniquement avec' clause INTO' –

+0

alors qu'est-ce que vous suggérez? Si le bloc est fermé, var MaxLineNo ne pourra pas être utilisé à l'extérieur. – PawanS

+1

Aussi, il est préférable d'écrire 'NULL' au lieu de '' pour les valeurs vides. –

Répondre

0

Peut-être que vous recherchez Implicit Statement Results in Oracle Database 12c Release 1:

declare 
    maxLineNo number := 0; 
    rc sys_refcursor; 
BEGIN 
select Max(b.Line_No) into maxLineNo 
FROM Brokerage b 
WHERE b.External_App_Id = 3720  AND b.Account_Id = '16970' ; 

open rc for 
SELECT b.External_App_Id -- this select giving erro 
     , '' 
     , b.Currency 
     , '' 
     , CAST(SUM(b.Brokerage_Amt) as VARCHAR2(17)) 
     , '' 
     , '' 
     , 1003 -- 1003 for Report summary 
     , '' 
    FROM Brokerage b 
    WHERE b.External_App_Id = 3720 
    GROUP BY External_App_Id, B.CURRENCY 
    ORDER BY 2; 

DBMS_OUTPUT.PUT_LINE(maxLineNo); -- this is giving value 

dbms_sql.return_result(rc); 
end;