1

MySQL プロシージャで current_timestamp+0 を変数に設定し、この変数をクエリで使用したいと考えています。

編集: 手順全体で同じ値を維持するには、@P_version が必要です。最初に現在のタイムスタンプを取得し、この値をすべてのクエリで使用したいと思います。

私は試した:

BEGIN
    DECLARE P_version float;
    SET P_version = current_timestamp +0;

    insert INTO reports_4.Items(id, version, itype)
    Select I.id, P_version, I.itype from Items where I.live = 1;
    .....
END;

と:

    BEGIN
      BEGIN
        SET @P_version = 'select current_timestamp +0 from dual';
            PREPARE query from @P_version;
            EXECUTE query;
            DEALLOCATE prepare query;
        END;    
      insert INTO reports_4.Items(id, version, itype)
      Select I.id, P_version, I.itype from Items where I.live = 1;
      .....
END;

以下を使用すると、プロシージャを 2 回目に呼び出すと、@P_version の値は最初にプロシージャを実行したときと同じ値になります。

BEGIN
  select @P_version = current_timestamp +0 from dual;

  insert INTO reports_4.Items(id, version, itype)
  Select I.id, @P_version, I.itype from Items where I.live = 1;
  .....
END;

アイデアはありますか?

4

1 に答える 1

2

set @p = now();? mysql では、このような場合にデュアルから選択する必要はありません。

于 2012-11-09T17:29:09.387 に答える