別のコメントの代わりに答えを試します。
あるコメントで述べたように、純粋/単純なselectステートメントはPL/SQLでは機能しません。しかし、refカーソルを返すにはストアド関数が必要だと言ったのは間違っていました。
ただし、まず最初に、PL/SQLブロックで宣言するタイプ「id_array」はPL/SQLタイプです。 refカーソルselectステートメントでは使用できません。代わりに、SQLタイプが必要になります:
create type id_array as table of number;
これは、「テーブルの作成」と同じように、一度だけ実行する必要があります。
PL/SQLブロックは次のようになります。
DECLARE
t_ids id_array;
BEGIN
UPDATE WorkerStatus
SET
StateId = :StateId
,StateReasonId = :StateReasonId
WHERE
StateId = :CurrentStateId
RETURNING Id BULK COLLECT INTO t_Ids;
OPEN :rcursor FOR SELECT * FROM TABLE(cast(t_Ids as id_array));
END;
PS:
この投稿を組み立てているときに、ORA-00942がどこから来たのかを理解しました。配列t_idsはPL/SQLタイプに基づいていましたが、SQL側では不明/使用可能ではありません。