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 。
, 。