以下是我存储过程的一部分,我用它来从我的数据库中提取数据。
查询
BEGIN
SET @sqlstring = CONCAT("SELECT b.ID, c.name, c.accountID,, b.total_logs, a.time_start, a.time_end ,COUNT(a.id) AS number_of_users
FROM ",logtable," a INNER JOIN users b on a.ID = b.ID INNER JOIN accounts c on b.accountID = c.accountID
GROUP BY ID;");
PREPARE stmt FROM @sqlstring;
EXECUTE stmt;
END
有时在db中,logtable(table is passed in a variable like logtable_1, logtable_2 .... )
可能不存在,当前缺少perticuler表时崩溃并抛出错误,因为a.time_start,a.time_end不能有没有日志表的值。< / p>
但我想要的只是在值NULL
上分配a.time_start, a.time_end
而不会抛出错误,
所以任何身体都可以告诉我有没有办法像
那样修改这段代码BEGIN
if logtable exists
\\ the query
else
\\ the query
END
答案 0 :(得分:0)
通过查询information_schema.tables
查找表的存在。如果它返回一个等于1的计数,那么您可以继续在表上执行查询。否则请使用Else
阻止。
示例:
declare table_exists int default 0;
select count(1) into table_exists
from information_schema.tables
where table_schema='your_table_schema_name'
and table_name = 'your_table_name';
if table_exists then
-- do something
else
-- do something else
end if;