次のコードは、「28」と書かれた入力に基づいて、1つのフィールド、つまり文字列を返します。私は(代わりに28の)どんな数に渡すことができますし、機能がその選択の結果があることが判明何でも戻ってくるように私はこのうちのSQL関数を作成するにはどうすればよいパラメータを使用してSQL関数を作成するにはどうすればよいですか?
SELECT data.id, LTRIM(SYS_CONNECT_BY_PATH(name, ', '),',') conc_names
FROM (
SELECT id, name, ROW_NUMBER() OVER (order by name) rownumber, COUNT(*) OVER() cnt
FROM (
SELECT es.EVENT_ID as id, s.SERVICE_NAME as name FROM DT_SERVICES s
JOIN DT_EVENT_SERVICE es ON s.SERVICE_ID = es.SERVICE_ID
WHERE es.EVENT_ID = 28
)
) data
WHERE rownumber = cnt
START WITH rownumber = 1
CONNECT BY PRIOR rownumber = rownumber-1;
?
私は1つ作成しようとしましたが、私はコンパイルエラーを取得し続けます。
現在のSQL関数の作成に
create or replace function "DT_SERVICE_STRING" (id in VARCHAR2)
return VARCHAR2 is
begin
DECLARE
result VARCHAR(200);
SELECT data.id, LTRIM(SYS_CONNECT_BY_PATH(name, ', '),',') conc_names
INTO result
FROM (
SELECT id, name, ROW_NUMBER() OVER (order by name) rownumber, COUNT(*) OVER() cnt
FROM (
SELECT es.EVENT_ID as id, s.SERVICE_NAME as name FROM DT_SERVICES s
JOIN DT_EVENT_SERVICE es ON s.SERVICE_ID = es.SERVICE_ID
WHERE es.EVENT_ID = id
)
) data
WHERE rownumber = cnt
START WITH rownumber = 1
CONNECT BY PRIOR rownumber = rownumber-1;
return result;
end;
エラー:
コンパイルは、失敗した7行目(午後3時22分21秒) PLS-00103:次のいずれかを期待したときにシンボルが "SELECT" が発生しました: begin関数のプラグマ・プロシージャ・サブタイプ・タイプ現在のカーソルの削除が先にある
何がコンパイルエラーを起こしていますか? –
Oracle Apexの関数として作成しようとしています – antonpug
とはどのようなものですか、それは機能しませんか?あなたの既存の破損したコードで質問を更新してください。 –