为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM8
【操作系统】: LINUX
【CPU】:
【问题描述】*:
CREATE OR REPLACE PROCEDURE "YGHM_DEV"."GETDEPTCHILDLIST"( "rootId" IN varchar(32) , "bshi" IN INT ) AS
done INT DEFAULT 0;
b varchar(4000) ;
cur1 CURSOR FOR SELECT subordinate_id FROM glb_dept_subordinate_mapping where dept_id=rootId;
BEGIN
IF bshi = 0 THEN
EXECUTE IMMEDIATE 'CREATE TEMPORARY TABLE IF NOT EXISTS tmpLst (sno int primary key auto_increment,aid varchar(32) );';
DELETE FROM tmpLst;
END IF;
insert into tmpLst values (null,rootId);
OPEN cur1;
FETCH cur1 INTO b;
WHILE done=0 LOOP
CALL getDeptChildList(b,1);
FETCH cur1 INTO b; END LOOP;
CLOSE cur1;
EXCEPTION
WHEN NOTFOUND THEN SET done = 1;
END
[-2106]:第 8 行附近出现错误:无效的表或视图名[tmpLst]
tmpLst 这张临时表你是在存储过程中通过动态执行DDL来创建的,而在创建这个存储过程时,库中还不存在 tmpLst 临时表。
你可以先用语句创建临时表,然后再创建存储过程,看是否正常了。
tmpLst前面加一个模式名,例如TEST.tmpLst