2012-11-09 42 views
1

在MySQL過程中,我想將current_timestamp + 0設置爲變量並在查詢中使用此變量。使用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; 

如果我用下面的,當我把我的程序進行第二次@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; 

你有什麼想法嗎?

回答

2

set @p = now();? mysql不需要從這個對象中選擇dual。

+0

如果我只是把SET @P_version = now(); 它說:錯誤1054(42S22):'字段列表'中的未知列'P_version' – arsenik

+0

它將不得不在'選擇i.id,@P_version,...'後面。 Vars ** HAVE **以@開頭,否則mysql將無法區分真正的var和什麼是具有相同名稱的字段/表名稱。 –

+0

Thank you it works,I do:set'@P_version = current_timestamp +0;'然後在查詢中使用'@P_version' – arsenik