MySql 儲存過程 臨時表 無法插入資料

衣舞晨風發表於2017-01-11

今天在寫儲存過程的時候,發現一個問題就是,sql明明能查出資料,為啥無法插入到臨時表、實體表呢?
儲存過程擷取如下:

BEGIN
    /********************************
    **作者:jiankunking
    **功能:demo
    **日期:2016-12-27
    **修改日期:2016-01-09
    *********************************/

    /* 傳入入引數
         '002',1,90
     CALL PROC_DEMO('002');
    */
  DECLARE TABLEANAME VARCHAR(30);
  -- 建立臨時表,把需要參加計劃的倉庫放入臨時表
    DROP TEMPORARY TABLE IF EXISTS TEMPTABLEANAME;
    SELECT OCODEARGUMENT;
  CREATE TEMPORARY TABLE TEMPTABLEANAME(LINID INT NOT NULL AUTO_INCREMENT,TABLEANAME VARCHAR(40),PRIMARY KEY(LINID));
    INSERT INTO TEMPTABLEANAME(TABLEANAME)
  SELECT TABLEANAME FROM JIANKUNKING_TABLEANAME WHERE OCODE=OCODEARGUMENT AND IFNULL(PLANFLG,0)=1;
  SELECT * FROM TEMPWAREHOUSE;
END

為啥呢?臨時表不行,實體表也不行。。。。。。。

SELECT TABLEANAME FROM JIANKUNKING_TABLEANAME WHERE OCODE='002' AND IFNULL(PLANFLG,0)=1;

在資料庫中執行是有值的啊
這裡寫圖片描述
但查詢臨時表,卻沒有插入值:
這裡寫圖片描述

後來發現,原來是:儲存過程中宣告瞭一個與資料庫中表列名一樣的變數,導致的,修改變數名字或者在查詢時在列名前,新增表名 即可解決。
這裡寫圖片描述

SQL查詢列名與變數名不要重複

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章