Oracle ストアド プロシージャのスプライシング

WBOY
リリース: 2023-05-14 09:26:07
オリジナル
3556 人が閲覧しました

はじめに

Oracle データベースでは、ストアド プロシージャは一連の SQL ステートメントを実行するために使用されるスクリプトであり、プログラム内で呼び出すことができます。ストアドプロシージャは、計算の高速性、再利用性、メンテナンスの容易さなどの利点があり、実際の開発で広く使用されています。この記事では、ストアド プロシージャでの文字列の結合操作を紹介します。

1. Oracle 文字列の結合

Oracle データベースで文字列を結合するにはさまざまな方法がありますが、一般的なのは || 記号と CONCAT 関数です。このうち || 記号は Oracle 独自の演算子で、2 つの文字列を結合することを意味します。例:

SELECT 'Hello ' || 'World' FROM DUAL;

上記のステートメントは文字列「Hello World」を返します。 || 記号は 2 つの文字列のみを連結でき、複数の文字列を連結するためには使用できないことに注意してください。さらに、接続された文字列に NULL が出現した場合、返される結果も NULL になります。例:

SELECT 'Hello ' || NULL || 'World' FROM DUAL;

このステートメントは NULL 値を返します。

一般的に使用されるもう 1 つの文字列結合方法は、CONCAT 関数です。この関数は、2 つ以上の文字列を連結し、連結された文字列を返します。例:

SELECT CONCAT('Hello ', 'World') FROM DUAL;

上記のステートメントは文字列「Hello World」を返します。 CONCAT 関数を使用して文字列を連結する場合、文字列が NULL の場合、関数は NULL 値を返します。例:

SELECT CONCAT('Hello ', NULL, 'World') FROM DUAL;

このステートメントも NULL 値を返します。

2. Oracle ストアド プロシージャでの文字列のスプライシング

Oracle ストアド プロシージャでは、|| 記号と CONCAT 関数を使用して文字列のスプライシング操作を実行することもできます。例:

CREATE OR REPLACE PROCEDURE PROC1 AS

STR1 VARCHAR2(20) := 'Hello';
STR2 VARCHAR2(20) := 'World';
STR3 VARCHAR2(50);
ログイン後にコピー

BEGIN

STR3 := STR1 || ' ' || STR2;
DBMS_OUTPUT.PUT_LINE(STR3);

STR3 := CONCAT(STR1, ' ', STR2);
DBMS_OUTPUT.PUT_LINE(STR3);
ログイン後にコピー

END;

ストアド プロシージャ PROC1 は 3 つの文字列変数 STR1、STR2 を定義します。そしてSTR3。ストアド プロシージャでは、まず || 記号を使用して STR1 と STR2 を接続し、値を STR3 に割り当てます。次に、CONCAT 関数を使用して STR1 と STR2 を接続し、値を STR3 に割り当てます。最後に、DBMS_OUTPUT.PUT_LINE を使用して、STR3 を DBMS 出力ウィンドウに出力します。

Oracle ストアド プロシージャでは、複数の文字列を接続する場合、安定性とコードの可読性を確保できる CONCAT 関数を使用して操作することをお勧めします。

3. サンプル コード

Oracle ストアド プロシージャの文字列結合操作をよりよく理解するために、完全なサンプル コードを以下に示します。 #

USER_ID     NUMBER(10),
USER_NAME   VARCHAR2(50),
PHONE_NUM   VARCHAR2(20)
ログイン後にコピー

);

ユーザー情報の値に挿入(1, 'アリス', '1234567890');

ユーザー情報の値に挿入(2, 'ボブ', '0987654321');

INSERT INTO USER_INFO VALUES(3, 'Charlie', '1357924680');


COMMIT;

プロシージャ PROC2 の作成または置換 AS

STR1 VARCHAR2(30);
STR2 VARCHAR2(100);
ログイン後にコピー

BEGIN

FOR CURR IN (SELECT USER_NAME, PHONE_NUM FROM USER_INFO ORDER BY USER_ID) LOOP
    STR1 := 'USER NAME: ' || CURR.USER_NAME || ', ';
    STR2 := CONCAT(STR2, STR1, 'PHONE NUM: ', CURR.PHONE_NUM, CHR(10));
END LOOP;
DBMS_OUTPUT.PUT_LINE(STR2);
ログイン後にコピー
END;

このストアド プロシージャを実行すると、各ユーザーの名前と電話番号が出力されます。このうち CHR(10) は Unicode 文字 10 を表します。これは復帰文字であり、改行出力に使用されます。

4. 概要

文字列のスプライシングは Oracle ストアド プロシージャでよく使用され、|| シンボルと CONCAT 関数はスプライシングを実装する一般的な方法です。 || 記号を使用して 2 つの文字列を接続できますが、複数の文字列を接続するのには適していません。CONCAT 関数は複数の文字列を接続でき、NULL 値を処理できるため、文字列の結合操作には CONCAT 関数を使用することをお勧めします。

以上がOracle ストアド プロシージャのスプライシングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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