2017-03-22 6 views
-3

に期待されている、私はそれがSELECT文でINTO句を想定しているため実行されませんいくつかのコードを持っている:は、スクリプトを実行することはできません - エラー:PLS-00428:INTO句このSELECT文

DECLARE 
    StatusCode VARCHAR2(255); 
BEGIN 
StatusCode := ''; 
    SELECT acc.AccountNo, 
    acc.AccountTitle, 
    NVL(cus.Title,'')  AS Title, 
    NVL(cus.Surname,'') AS Surname, 
    NVL(cus.Forename1,'') AS Forename1, 
    acc.GBP_Balance, 
    CASE 
     WHEN sc.ExcludeFromSCV = 1 
     THEN 'Yes' 
     ELSE 'No' 
    END AS ExcludedAccount 
    FROM DIM_FM_FSCS_Account acc 
    INNER JOIN DIM_FM_FSCS_CustomerAccLink lnk 
    ON acc.ID = lnk.FSCSAccountLink 
    LEFT JOIN DIM_FM_FSCS_Customer cus 
    ON lnk.FSCSCustomerLink = cus.ID 
    LEFT JOIN DIM_FM_FSCS_StatusCode sc 
    ON (acc.ExclusionCode  = '' 
    AND sc.Code     = acc.AccountStatusCode) 
    OR (sc.Code     = acc.ExclusionCode) 
    WHERE (acc.AccountStatusCode = StatusCode 
    AND acc.ExclusionCode  = '') 
    OR acc.ExclusionCode   = StatusCode; 
END; 

しかし、私はこれを追加する方法と、このスクリプトでどのように動作するのかは不明です。

助けてもらえますか?

+0

あなたは[ドキュメント](https://docs.oracle.com/cd/B13789_01/appdev.101/b10807/13_elems045.htm) – Nitish

答えて

1

エラーメッセージは十分に明確です。PL/SQLでは、結果をある変数にフェッチせずにSELECTクエリを作成することはできません。例えば

SQL> begin 
    2  select 1, 2 from dual; 
    3 end; 
    4/
    select 1, 2 from dual; 
    * 
ERROR at line 2: 
ORA-06550: riga 2, colonna 5: 
PLS-00428: an INTO clause is expected in this SELECT statement 


SQL> declare 
    2  v1 number; 
    3  v2 number; 
    4 begin 
    5  select 1, 2 
    6  into v1, v2 
    7  from dual; 
    8 end; 
    9/

PL/SQL procedure successfully completed. 

SQL> 

だから、あなたはあなたのクエリの結果(複数可)を処理するための変数を定義する必要があります。

この例では2つのスカラー変数を使用しましたが、クエリで複数の行を返すことができる場合は、データを取得するためにコレクションを使用する必要があります。例えば:

declare 
    type tyListNum is table of number; 
    vList1 tyListNum; 
    vList2 tyListNum; 
begin  
    select 1, 2 
    bulk collect into vList1, vList2 
    from dual 
    connect by level <= 2; 
    -- 
    -- whatever you need to do with the fetched values 
end;   
+0

を見てあなたはどのように私を見ることができますことができますこれをどうしたらいいですか? –

+0

変数を定義してINTOを使用しましたが、値が不十分であるというエラーORA00947が返されます –

+0

3つの列が返された場合、正確に3つの変数を使用するか、問合せ結果と一致するタイプを定義する必要があります。このタイプの変数を使用してください。 – Aleksej

関連する問題