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

MySQLストアドプロシージャで一時テーブルを作成する

    私はあなたのためにそれを少し片付けて、サンプルコードを追加しました。私は常にパラメータ名をそれらが表すフィールドと同じに保ちますが、問題を防ぐために接頭辞p_を付けます。 sproc本体で宣言された変数でも同じことを行いますが、接頭辞はv_です。

    ここに私の例のもう1つを見つけることができます:

    MySQLの階層データから深度ベースのツリーを生成する(CTEなし)

    drop procedure if exists emp_performance;
    
    delimiter #
    
    create procedure emp_performance
    (
    in p_employee_id varchar(10)
    )
    begin
    
    declare v_counter int unsigned default 0;
    
    create temporary table tmp engine=memory select time_in, time_out 
     from attendance where employee_id = p_employee_id;
    
    -- do stuff with tmp...
    
    select count(*) into v_counter from tmp;
    
    -- output and cleanup
    
    select * from tmp order by time_in;
    
    drop temporary table if exists tmp;
    
    end#
    
    delimiter ;
    
    call emp_performance('E123456789');
    


    1. Doctrine2クエリビルダーでorXを連鎖させる

    2. phpを使用して復号化できるmysqlにパスワードを保存するより良い方法

    3. SQL Server:プールされた接続間での分離レベルのリーク

    4. カタログ、スキーマ、ユーザー、およびデータベースインスタンス間の関係