2017-03-28 2 views
0

Oracle Apex 5で作業していますが、次のコードでアプリケーションを実行しようとすると、行数」「正確なフェッチが要求された行数を超えて返されます」

DECLARE 
    TERRANUMBER VARCHAR2(40); 
BEGIN 
    SELECT CONCAT(YEAR, '-') 
INTO TERRANUMBER FROM MP_APPLICATIONS; 
END; 
+0

「CONCAT(YEAR、 ' - ')FROM MP_APPLICATIONS'を実行してみてください。明らかに1つの変数に入れることができない複数の行を返すことがわかります。値のいずれかを取得したいですか?おそらく最大/分ですか? – GurV

答えて

1

変数teranumberは1つの値しか保持できません。したがって、クエリを選択すると複数の行が返された場合、このエラーがスローされます。今年の

declare 
    terranumber varchar2(40); 
begin 
    select concat(year, '-') into terranumber 
    from mp_applications 
    where rownum = 1; 
end; 
/

おそらく、あなたはmax(またはmin)を取得したい:

あなたが値のいずれかをしたい場合は

declare 
    terranumber varchar2(40); 
begin 
    select concat(max(year), '-') into terranumber 
    from mp_applications; 
end; 
/

それとも、すべての値にアクセスしたいかもしれ1つずつ:

begin 
    for rec in (select concat(year, '-') as year from mp_applications) 
    loop 
     -- use rec.year as required 
    end loop; 
end; 
/
+0

ありがとうございます。レンダリングされたアプリケーション。 – ruchithelamp

+0

私はrownumを使うと、(連結して)呼び出された列から最初の行を取得するだけです。列の最新の行を取得するにはどうすればよいですか? (TOPおよびLIMITはOracle Apex 5では動作していません) – ruchithelamp

0

INTO句を使用するときに選択できる行は1つだけです。通常、WHERE句の条件を追加して、返されるデータを1行に制限します。または、あなたがしようとしていることに依存するコース。

関連する問題