sql >> データベース >  >> RDS >> MariaDB

SQLと手続き型ステートメントの能力をMariaDBのOracle互換モードと組み合わせる

    MariaDB Server 10.3に戻って、新しいSQLモード(SQL_MODE =ORACLE)を追加して、構造化照会言語(SQL)の手続き型拡張であるOracle PL/SQLのサブセットとの互換性を提供しました。 MariaDB Community Server 10.6の最近のリリースでは、ROWNUM()などのいくつかの関数を追加することにより、MariaDBのPL/SQL互換性を拡張するための旅を続けてきました。 、ADD_MONTHS() およびTO_CHAR() 。これはいくつかの理由で非常に優れていますが、最初に、MariaDBはオープンソースのOracle互換性を実装する唯一のデータベースであるため、この機能はすべての人が利用できます。それが何を意味するのかを真に理解するには、少し前に戻って理由を理解することが重要です。 そもそもこの道を歩み始めました。

    手続き型プログラミングと宣言型プログラミングの力

    SQL言語のデータ操作能力と手続き型機能を組み合わせることにより、開発者は多くの刺激的で新しい機会を得ることができます。 PL / SQLを使用すると、開発者は「何をするか」という宣言型アプローチに焦点を当てたSQL文を実行できると同時に、操作の流れまたは「どのように行うか」を制御する機能も提供されます。

    待って、何? OK、次の従来のを検討してください SQLステートメント。

    SELECT id, name, has_kids FROM friends;

    シンプルでエレガント、そして効果的。 SQLは美しい言語ですが、制限があります。たとえば、SELECTから返された結果をループしたい場合はどうでしょうか。 ステートメントの実行?次に、結果を解析しながら、条件付きステートメントを使用して各結果を確認します(たとえば、has_kidsの場合) 本当です)それらの条件に基づいて特定の操作を実行できるようにしますか?

    クイックノート :これは純粋に架空のものです。子供がいる友達と子供がいない友達がいる場合は、すべて同じように扱うと確信しています。しかし、この例のために、そうではないとしましょう。わかった? OK、かっこいい。

    しかし、これらすべての反復と条件が発生すると、エラーが発生する可能性があります。最初に元の結果をアプリケーションコードに戻して処理することなく、データベース側でエラー(つまり例外)を直接処理できたら素晴らしいと思いませんか?ええと、それは残念です。なぜなら、あなたは単純な古いSQLを使用していて、それらのことはどれも不可能だからです。

    恐れるな!代わりに、私と一緒にPL / SQLのすばらしい世界に来てください!

    PL / SQLブロックと呼ばれるものを使用することで、使い慣れたSQLと、変数の宣言、条件の処理、ループなどの機能を使用して操作のフローを制御できる手続き型機能を組み合わせることができます。データを介して、例外を管理するなど。

    PL /SQLブロックはMariaDBServer内で処理され、SQLおよび手続き型ステートメントがそれに応じて解析および実行されます。

    かなりかっこいいですよね?それはとても良くなります!しかし、前の例に戻ります。単一のPL/SQLブロックを使用して、前に示したすべてを実行できます。

    例:

    DELCARE 
    	CURSOR c IS SELECT id, name, has_kids FROM friends;
    BEGIN 
    	FOR friend_row IN c LOOP
    		IF friend_row.has_kids == true THEN
    			/* Do something */
    		ELSE
    			/* Do something else */
    		END IF;
    	END LOOP;
    EXCEPTION
    	WHEN no_data_found THEN
    		/* Handle no data found */
    	WHEN others THEN
    		/* Handle all other kinds of exceptions */
    END;

    詳細

    強力なものでしょ?まあ、このブログ投稿は本当に氷山の一角にすぎません。あなたがそうするなら、あなたの食欲を刺激するための少しの何か。ただし、詳細を知りたい場合は、最近発表したウェビナー、MariaDBとPL / SQL:SQLと手続き型ステートメントの組み合わせをご覧になることを強くお勧めします。その中で、PL / SQLサポートを追加および拡張することを使命とした理由についてさらに詳しく説明し、さまざまな例とライブコーディングのデモンストレーションを含めて、その方法を直接確認します。 MariaDB内でPL/SQLを使用できます。ハッピーコーディング、友達!


    1. SQL Serverでグローバル変数を宣言する方法..?

    2. SQLの制約

    3. SQLiteで現在のドットコマンド設定を表示する方法

    4. アプリケーションの新しいバージョンを更新するときにsqliteデータベースを削除します