MySQL存储过程中能不能用IF exists(SELECT * from form__rmms_pofm_fundsmanage) THEN ...END

来检验表是否存在来检验表是否存在,这样写是不对的,如有,请提供我正确的写法如没有,请问有没有其他写法,能百度出来的blog,我都试过了,不要贴没有验证过的blog。MyS... 来检验表是否存在来检验表是否存在,这样写是不对的,如有,请提供我正确的写法如没有,请问有没有其他写法,能百度出来的blog,我都试过了,不要贴没有验证过的blog。MySQL5.5
具体存储过程如下:if exists()那句出错。
delimiter //
DROP PROCEDURE IF EXISTS refreshData;
CREATE PROCEDURE refreshData()
BEGIN
DECLARE station_temp VARCHAR(150);
declare tmp varchar(20) default NULL ;
DECLARE my_cursor CURSOR FOR select station from uisp_lw_100000.form__base_mechanismset_mechanisminfo;
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tmp = NULL; -- while 循环写法,其他循环体写法不同
OPEN my_cursor;
FETCH my_cursor INTO tmp;
while (tmp IS NOT NULL) do
-- SELECT tmp;
set @dbname="uisp_lw_"+tmp;
select @dbname;
set @insert_sql = CONCAT("insert into form__rmms_pofm_fundsmanage SELECT * from uisp_lw_",tmp,".form__rmms_pofm_fundsmanage") ;
IF exists(SELECT * from uisp_lw_100000.form__rmms_pofm_fundsmanage) THEN
prepare stmt from @insert_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
FETCH my_cursor INTO tmp;
end while;
CLOSE my_cursor;
END //
delimiter ;
call refreshData();
展开
 我来答
飞鱼678
推荐于2017-08-13 · TA获得超过1052个赞
知道小有建树答主
回答量:708
采纳率:0%
帮助的人:530万
展开全部
你这个if是要判断uisp_lw_100000表空间里是不是存在表form__rmms_pofm_fundsmanage。
你这样判断如果是不存在就直接报错了。所以就不能运行通过。
你在上边再声明一个变量tb_name用来存放你要找的这个表名。
select table_name into tb_name from information_schema.tables where table_schema='uisp_lw_100000' AND TABLE_NAME='form__rmms_pofm_fundsmanage';
这样你判断tb_name是不是空就行了。判断跟你的while跳出的判断一样。
匿名用户
2015-04-10
展开全部
SELECT没有IF EXISTS 语法,你可以用select count(*) from information_schema.tables where table_schema='your_schema' and table_name='your_tab';看返回0还是1来判断。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式