MySql関数の概要


昨日、ツリーschemaについて、データベースを使用する関数を何気なく見つけました.以前は接触したことがありますが、確実にやったことがないので、この機会にDemoを作って後で忘れないようにしました.
雑談は本題に入らず,開始関数は記憶過程とほぼ似ている.次に、両者の違いを比較することで、初歩的に認識します.
  • キーワードの違い;ストレージ・プロシージャはprocedureです.関数はfunctionです.
  • パラメータのサポート;ストレージ・プロシージャは、入力パラメータ(in)、出力パラメータ(out)をサポートします.関数は入力パラメータのみサポートされています(APIおよびマニュアルでは、出力パラメータのサポートについては明確に言及されていません.Demoを行う際、パラメータの前にキーワードoutを追加しようとしましたが、構文エラーを提示しました).
  • 戻り値の要件:ストレージ・プロシージャは、戻り値がなくてもよいし、戻り値があってもよいし、戻り値の結果で結果セットをサポートする.関数は戻り値を設定する必要があります.
  • 実行中、関数はselect fun_のようなselectによる実行をサポートするTest1();ストレージ・プロシージャはできません.
  • ネストに関する問題;実際の開発ではネストにかかわる可能性があるからです.mysqlでは両者は多層ネストをサポートしている.MsSqlでは、ストレージ・プロシージャは多層ネスト(2層以内)をサポートしません.

  •   
    delimiter  $$
    drop function if exists fun_Test1$$
    create function fun_Test1
    (
    _para1 int,
    _para2 int
    )
    returns int DETERMINISTIC READS SQL DATA
    begin
    return _para1+_para2;
    end$$
    delimiter ;
    
             , returns      “DETERMINISTIC READS SQL DATA”。                。      :
    -- CONTAINS SQL                ;
    -- NO SQL        SQL  。
    -- READS SQL DATA             ,          。
    -- MODIFIES SQL DATA             。
    
          ,      。