質問

いくつかのアクションを実行する必要がある関数があるとしましょう。これらはすべて、1つのクエリの結果に依存します。私が見つけることができたことはすべて、手順の外で温度テーブルを定義する必要があることを示していますが、それはやりたくありません。

次のようなことをしたい:

create or replace function f_example(
  a_input in number
)
return varchar2 is
begin
  create local temporary table tempIDs
  ( 
    testID number(6, 0)
    , testValue number(8,0)
  );

  //select data from tableFoo that will be overwritten by a_input into tempIDs

  //update data in tableFoo with a_input & store old data in another tableFoo field

end f_example;

この構文は機能しません。 Oracleは関数内で「作成」を許可しません。

私は本当にデータベースプログラマではありません - 私はC#とJavaで働くことに慣れています。その場合、メソッドが終了したときに範囲外に出るローカル配列(または何でも)に値を保存します。 Oracle SQLでこのようなことをする方法は合法的にありませんか?

役に立ちましたか?

解決

PL/SQLレコードタイプと関連するテーブルタイプを定義できます。次に、Aを発行できます SELECT...BULK COLLECT あなたのテーブルを埋めるために。

declare
  type my_record_type is record (testId number, testvalue number);
  type my_table_type is table of my_record_type index by binary_integer;
  my_table my_table_type;
begin
  select x, y bulk collect into my_table from table_foo;
end;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top