0

Oracle プロシージャで select ステートメントを作成できません。これを作成するのを手伝ってください。プロシージャで insert,update.delete ステートメントを作成しましたが、select ステートメントを作成できません。カーソルを使用して選択ステートメントを作成するのを手伝ってください。

c_dbuser OUT SYS_REFCURSOR

ELSIF (TYPE_ =1) THEN

  OPEN c_dbuser FOR
  SELECT * FROM tbl_discount_master ;
  CLOSE c_dbuser;

END IF;

call procedure_name(xx,xx,xx,1);

call procedure ステートメントを使用して選択した値を取得するにはどうすればよいですか。

4

2 に答える 2

1

他の提案に加えて、ちょうど 1 つの行を取得している場合、この解決策があります。

DECLARE
    myvar1 mytable.mycolumn1%TYPE;
    myvar2 mytable.mycolumn2%TYPE;
BEGIN
    SELECT mycolumn1, mycolumn2
      INTO myvar1, myvar2
      FROM mytable
     WHERE …;
END;

NO_DATA_FOUND選択された行がない場合 ( )、または複数の行がある場合( ) 、例外がスローされTOO_MANY_ROWSます。

于 2012-12-01T14:43:24.920 に答える
0

選択と挿入/更新/削除の違いは、1 つ以上の変数または行タイプ変数のいずれかの構造を選択する必要があることです。

高速で冗長性が低く、エラーが発生しにくい暗黙カーソルを優先して、可能な限り明示カーソルを使用しないでください。例えば。

for cur_my_query in
  select column1,
         column2,
         ...
  from   ...
  where  ...
loop
  refer here to cur_my_query or my_query.column1 etc
end loop
于 2012-12-01T14:39:52.177 に答える