1

プロシージャがいくつかのパラメータを受け入れ、それらを操作する MYSQL プロシージャを作成する必要があります。ただし、存在しない場合、パラメーター変数はいくつかの「デフォルト」値を選択して続行します。PHP での疑似関数オーバーロードの処理方法に似ています。

このコードは私が思いついたものです。

CREATE PROCEDURE PROC_INS_CONTENT_TEST(IN DATA_VAL LONGTEXT)
BEGIN
    IF (DATA_VAL IS NULL) THEN SET DATA_VAL='DEFAULT'; END IF;
    INSERT INTO CONTENT_TEST (DATA) VALUES (DATA_VAL);
END

そして、このコードは私が望むように動作しません。パラメータが宣言されたときに変数にデフォルト値を割り当てる方法はありますか?

4

1 に答える 1

2

はいあります。

関数/プロシージャの変数にデフォルト値を設定する場合は、次のようにします。

CREATE PROCEDURE PROC_INS_CONTENT_TEST(IN DATA_VAL LONGTEXT)
BEGIN
    DECLARE my_data_double DOUBLE DEFAULT 0;
    DECLARE my_data_varchar VARCHAR(20) DEFAULT 'default_value';
    DECLARE DATA_VAL LONGTEXT DEFAULT 'default_value';
    DECLARE my_data_integer INT DEFAULT 0;
END

または、値を割り当てたい場合は、次のようにすることができます。

SET my_data_value = 12345;

関数/手順内。

于 2012-11-23T14:52:02.770 に答える