0
create or replace PROCEDURE newprocedur(outname OUT VARCHAR2,outroll OUT NUMBER) AS
  CURSOR c1 IS 
    select Name,Rollno,Section 
      from emp;
BEGIN
  Open c1;
  fetch c1 into outname,outroll;

ここで、カーソルの 3 つの列のうち、上記のように FETCH を使用して 2 つの列のみをフェッチすることは可能ですか??

4

1 に答える 1

2

11g を使用しています。変数やカーソルを定義する必要はありません。面倒な作業はオラクルにお任せください。

create or replace PROCEDURE newprocedur(outname OUT VARCHAR2,outroll OUT NUMBER) 
AS
BEGIN
   select Name,Rollno
   into outname,outroll
   from emp;
END;

EMP に複数の行がある場合、これによりエラーが発生します。それを修正するさまざまな方法があります。たとえば、ROWNUM を使用して人為的に結果セットを制限します。または、EMP_ID を入力パラメーターとして使用して、目的のレコードを選択します。これがおもちゃの例なのか、実際の API の開始なのかによって異なります。


「上記で ROWNUM を使用する方法は?」

ROWNUM は疑似列であり、ドキュメントで説明されています。ただし、完全を期すために、次のように結果セットを制限するために使用できます。

select Name,Rollno
from emp
where rownum <= 1;
于 2012-11-01T11:15:09.650 に答える