mysql在同一过程中使用返回值

标签 mysql

我的查询执行并返回一个值,我需要在同一个过程中使用返回值,如何使用它?

我的代码是

  set @table_name_count = CONCAT('SELECT COUNT(*) into @xcount ', CONCAT( ' FROM ' ) , concat( table_name),concat( ' where issueNumber=',concat('30030'),concat( ' and ISSNcode='),CONCAT('112640402')));

     PREPARE statement from @table_name_count;
     EXECUTE statement;
     DEALLOCATE PREPARE statement;
     select 'hello4' from dual;
     IF xcount > 0 and xcount<>NULL THEN
       DELETE from table_name where issueNumber='30030' and ISSNcode='112640402' ;
     END IF  ;

这里我需要在条件中使用@xcount

IF xcount > 0 and xcount<>NULL THEN
   DELETE from table_name where issueNumber='30030' and ISSNcode='112640402' ;
 END IF  ;

最佳答案

因为您正在处理用户( session )变量,所以您只是忘记了变量名称前的 @。你的 IF 语句应该是这样的

IF @xcount > 0 THEN
   ^

您不需要检查 NULL,因为 COUNT() 总是返回一个值。

这是 SQLFiddle 演示


现在没有意义在发出DELETE之前检查记录是否存在。 如果 DELETE 语句的 WHERE 子句中没有匹配条件的行,它不会执行任何操作,也不会产生任何错误。

因此您可以放弃除DELETE 语句之外的所有代码。

关于mysql在同一过程中使用返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21037982/

相关文章:

mySQL 创建表脚本并输出

php - 根据表单输入更改 SQL "Where"子句

PHP 只返回第一个 MySQL 结果

MYSQL查询搜索关系

c# - 如何修复对象引用未设置到对象实例的 MySql 连接问题

java - java中如何链接多个框架

mysql - 如何使用数据库防止在 codeigniter 中插入某些冒犯性词语

如果重复行,MySQL 更新

mysql - 无法在简单查询中使用 ORDER BY

mysql - 通过 java.time LocalDateTime 进行异常比较/搜索