今天在写存储过程的时候,发现一个问题就是,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;
- 1
在数据库中执行是有值的啊
但查询临时表,却没有插入值:
后来发现,原来是:存储过程中声明了一个与数据库中表列名一样的变量,导致的,修改变量名字或者在查询时在列名前,添加表名 即可解决。
SQL查询列名与变量名不要重复
作者:jiankunking 出处:http://blog.csdn.net/jiankunking