1. ホーム
  2. sql

PL/SQLのファンクションとプロシージャの違いは何ですか?

2023-11-30 05:29:44

質問

PL/SQLにおける関数とプロシージャの違いは何ですか?

どのように解決するのですか?

プロシージャは戻り値を持ちませんが、関数は戻り値を持ちます。

CREATE OR REPLACE PROCEDURE my_proc
   (p_name IN VARCHAR2 := 'John') as begin ... end

CREATE OR REPLACE FUNCTION my_func
   (p_name IN VARCHAR2 := 'John') return varchar2 as begin ... end

この関数がパラメータリストと "as" キーワードの間に return 節を持っていることに注目してください。これは、関数の本体内の最後のステートメントが次のように読まれることが期待されていることを意味します。

return(my_varchar2_local_variable);

ここで my_varchar2_local_variable はその関数が返すべきいくつかの varchar2 です。