【发布时间】:2009-09-21 18:40:18
【问题描述】:
我在 MySQL 中使用存储过程,带有 CASE 语句。
在 CASE 的 ELSE 子句中(相当于 default: )我想选择并返回一个空的结果集,从而避免不处理 ELSE 的情况而引发 SQL 错误,而是像返回一个空的结果集一样常规查询不会返回任何行。
到目前为止,我已经设法通过以下方式做到这一点:Select NULL From users Where False
但我必须命名一个现有的表,例如本例中的“用户”。 它可以工作,但如果最终重命名或删除使用的表名,我更喜欢一种不会中断的方式。
我试过Select NULL Where False,但它不起作用。
使用Select NULL 不会返回一个空集,而是返回一个包含名为 NULL 的列且具有 NULL 值的行。
【问题讨论】:
-
你是对的。存在很多表,问题是一旦你选择了一个表,如果将来删除或重命名该表,你编写的代码将不再工作,你将耦合两个没有任何东西的软件与彼此有关,但其中一个的变化使另一个停止工作。这就是所谓的耦合,而软件中的耦合通常是个坏主意。
-
@Petruza:在我使用 Access/Jet 的时候,我的架构会为此目的包含一个名为“RowRowTable”的永久辅助表。
-
请不要回答或评论。这个问题已有 11 年的历史了,我什至不记得我为什么问它,但 stackoverflow 会继续向我发送通知,直到时间结束。
-
@zoe 所以你确实看到了 Stackoverflow 拒绝解决的问题,对吧?
-
是的,我只是不想收到来自旧帖子的通知,不想解除关联。关闭单个帖子的通知有多难?大多数网站都有它。
标签: sql mysql stored-procedures null resultset