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

MySQLはEXECUTEの結果を変数に保存しますか?

    プリペアドステートメントを使用してこれを行う場合は、元のステートメント宣言に変数の割り当てを含める必要があります。

    保存されたルーチンを使用する場合は、より簡単です。ストアド関数の戻り値を変数に直接割り当てることができ、ストアドプロシージャはパラメータをサポートします。

    例:

    プリペアドステートメント:

    PREPARE square_stmt from 'select pow(?,2) into @outvar';
    set @invar = 1;
    execute square_stmt using @invar;
    select @outvar;
    +---------+
    | @outvar |
    +---------+
    |       1 |
    +---------+
    DEALLOCATE PREPARE square_stmt;
    

    ストアド機能:

    delimiter $$
    create function square_func(p_input int) returns int
    begin
      return pow(p_input,2);
    end $$
    delimiter ;
    
    set @outvar = square_func(2);
    select @outvar;
    +---------+
    | @outvar |
    +---------+
    |       4 |
    +---------+
    

    ストアドプロシージャ:

    delimiter $$
    create procedure square_proc(p_input int, p_output int)
    begin
      set p_output = pow(p_input,2);
    end $$
    delimiter ;
    
    set @outvar = square_func(3);
    call square_proc(2,@outvar);
    select @outvar;
    +---------+
    | @outvar |
    +---------+
    |       9 |
    +---------+
    



    1. Group_ConcatおよびConcatを使用した場合のMySQLの結果の切り捨て

    2. C#でのストアドプロシージャの出力パラメータの使用

    3. 大量のデータに対応するPostgreSQLのスケーリング

    4. MySQL GUID/UUIDの保存