0

準備済みステートメントのセットで、1 つの準備済みステートメントで見つかったキーを後の準備済みステートメントに渡したいと考えています。

私はこれを使用してこれを行うことができます:

PREPARE get_Class_Session FROM
    "CREATE TABLE time_Table_Keys 
             (SELECT time_Table_Key,
                           date,
                           DATE_FORMAT(date, '%W') AS day,
                           slot,
                           class_Session 
                FROM `Time_Table` 
             WHERE (((date >=? && date <= ?) && DAYOFWEEK(date)=? && (slot >=? && slot <=?)) && class_Session ='0')
            )";

に続く:

PREPARE update_Time_Table FROM
    "UPDATE Time_Table SET class_Session='8888'
      WHERE time_Table_Key IN ( SELECT time_Table_Key FROM time_Table_Keys)";

そして最後に:

PREPARE drop_Tmp_Table FROM
    "DROP TABLE time_Table_Keys";

でも:

CREATE TEMPORARY TABLE私は本当にandを使用したいのですDROP TEMPORARY TABLEが、それを実行しようとすると、準備が解析されたときにもちろん存在しないため、IN 句は一時テーブルを見つけることができません。

一時ファイルのスコープを指定する方法はありますか、または IN 句のテーブルが一時的であることを準備に伝える方法はありますか。

4

1 に答える 1

1

何か足りないかもしれませんが、この特定のケースでは一時テーブルが必要ですか? このようなものは機能しますか?

UPDATE Time_Table 
SET class_Session='8888'
WHERE 
(
  (
     (date >=? && date <= ?) && 
     DAYOFWEEK(date)=? && 
     (slot >=? && slot <=?)
  ) 
  && class_Session ='0'
)

これがSQL Fiddleです。

于 2013-01-14T20:21:35.497 に答える