首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL存储过程有问题

MySQL存储过程有问题
EN

Stack Overflow用户
提问于 2012-05-01 16:42:07
回答 1查看 1.1K关注 0票数 0

在下面的过程中,我有两个参数-当我运行时,应该填充这两个参数。我希望这些参数是可选的,如果我填充第一个数据,应该根据一个参数进行过滤如果我填充第二个参数并保留为空,则第一个数据应该根据第二个参数进行过滤,如果我同时传递了两个参数,则应该根据两个参数进行过滤,如果我没有传递参数,则不应该进行过滤。

代码语言:javascript
复制
DROP PROCEDURE IF EXISTS medatabase.SP_rptProvince2;
CREATE PROCEDURE medatabase.`SP_rptProvince2`(
IN e_Region VARCHAR(500),
IN e_Province VARCHAR(500)
)
BEGIN

  DECLARE strQuery VARCHAR(1024);
  DECLARE stmtp   VARCHAR(1024);


    SET @strQuery = CONCAT('SELECT * FROM alldata where 1=1 ');
   -- IF e_region IS NOT NULL THEN


    -- SET @strQuery = CONCAT(@strQuery, 'AND regionName'=e_Region);
   -- END IF;

    IF e_Region IS NOT NULL THEN
        SET @strQuery = CONCAT(@strQuery, ' AND regionName = "',e_Region,'"');


    IF e_Province IS NOT NULL THEN
        SET @strQuery = CONCAT(@strQuery, ' AND provinceName = "',e_Province,'"');

   END IF;
   END IF;

  PREPARE  stmtp FROM  @strQuery;
  EXECUTE  stmtp;
 End;
EN

回答 1

Stack Overflow用户

发布于 2012-05-01 16:43:18

MySQL过程不支持可选参数。您必须做您当前正在做的事情(传入并测试NULL)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10395425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档