MySQLで関数を作成する方法

WBOY
リリース: 2023-05-30 10:34:05
転載
3499 人が閲覧しました
    #Mysql で関数を作成する方法

    DELIMITER $$
    DROP FUNCTION IF EXISTS genPerson$$
    CREATE FUNCTION genPerson(name varchar(20)) RETURNS varchar(50)
    BEGIN
      DECLARE str VARCHAR(50) DEFAULT '';
      SET @tableName=name;
      SET str=CONCAT('create table ', @tableName,'(id int, name varchar(20));');
      return str;
    END $$
    DELIMITER ;
    ログイン後にコピー

    上の図の SQL に関する限り

    (1) DELIMITER $ $ はターミネータを定義します。 MySQL のデフォルトのターミネータはセミコロンですが、関数本体でセミコロンを使用することもできます。競合を回避するには、追加のターミネータを定義する必要があります。

    (2) DROP FUNCTION IF EXISTS genperson$$ 関数 genperson がすでに存在する場合は、それを削除します。

    (3) CREATE FUNCTION は関数 genperson を作成します。関数のパラメータは name、戻り値は varchar(50) です。

    (4) 関数本体は BEGIN と END の間に配置されます。

    (5) DECLARE は変数を宣言します。str 型は varchar(50) で、デフォルト値は空です。

    (6) CONCAT は複数の文字列を接続します。

    (7) RETURN は連結された文字列 str を返します。

    MySQLで関数を作成する方法#実行結果からわかる

    MySQLで関数を作成する方法Mysqlは関数を作成できませんエラーコード1418

    In mysql で関数を作成すると、エラー コード

    が報告されます: 1418

    この関数には、DETERMINISTIC、NO SQL、または READS SQL DATA のいずれもありません。宣言とバイナリ ログが有効になっている (安全性の低い log_bin_trust_function_creators 変数を使用することもできます) これは、関数作成関数がオンになっていないことを意味します。

    解決策

    1.関数作成機能がオンになっているか確認

    show variables like '%func%';
    -------------------------------------------
    +---------------------------------+-------+
    | Variable_name                   | Value |
    +---------------------------------+-------+
    | log_bin_trust_function_creators | OFF   |
    +---------------------------------+-------
    ログイン後にコピー

    2.オンにする

    SET GLOBAL log_bin_trust_function_creators = 1;
    ログイン後にコピー

    3.再度確認

    リーリー

    以上がMySQLで関数を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート