使用带有变量的 If Then 运行不同的 SQL 语句
Posted
技术标签:
【中文标题】使用带有变量的 If Then 运行不同的 SQL 语句【英文标题】:Run different SQL statements using If Then with a variable 【发布时间】:2021-04-16 23:18:34 【问题描述】:尝试做一些非常简单的事情。使用 If/Then,有没有办法根据变量的值运行单独的 Select 语句? 下面代码中的函数GetTotalActiveUnits()返回一个整数。
set @RetVal = GetTotalActiveUnits(CustomerCode);
if @RetVal = 0 then
Select * from tblREF_UnitInfo;
else
select * from tblREF_State;
end if
【问题讨论】:
'mysql 支持 IF、CASE、ITERATE、LEAVE LOOP、WHILE 和 REPEAT 结构用于存储程序中的流控制' - dev.mysql.com/doc/refman/8.0/en/flow-control-statements.html,存储的 prgram 是过程、函数、触发器和事件。 是的,我知道这一点。如我的示例所示,我使用的是 If 构造。 在这种情况下,您的代码没有问题,它可以按编码工作.. 是的,我少了一个分号。除此之外,它还可以嵌入到 SP 中。 【参考方案1】:您的代码没有问题 - 至少就 IF 而言,如果它在存储例程中。
drop procedure if exists p;
delimiter $$
create procedure p(inp int)
begin
set @RetVal = inp;# GetTotalActiveUnits(CustomerCode);
if @RetVal = 0 then
select @retval ;
else
select @retval ;
end if ;
end $$
delimiter ;
call p(1);
+---------+
| @retval |
+---------+
| 1 |
+---------+
1 row in set (0.001 sec)
call p(0)
+---------+
| @retval |
+---------+
| 0 |
+---------+
1 row in set (0.001 sec)
【讨论】:
好吧,我搞砸了。我想我可以将我的代码粘贴到工作台 SQL 语句窗口中并运行它。但它一直显示错误。我从未在实际的 SP 中真正尝试过。我搞砸了。感谢您的帮助。以上是关于使用带有变量的 If Then 运行不同的 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章
如果表不存在,如何运行包含针对另一个 sql 实例上的表的查询的 If-Then-Else 语句?
QT 程序包含一个带有 if-test-then 块和转义的必要引号的 bash 脚本问题错误
If-then-else 逻辑来决定运行哪个 select 语句