提问人:Prachi Prajapati 提问时间:10/21/2023 更新时间:10/22/2023 访问量:22
根据不同条件验证MySQL的存储程序
Validate Stored Procduer of MySQL based on different condition
问:
我正在研究用于从数据库获取记录的MySQL存储过程。
在存储过程中,我有一个参数,即运输公司的类型。所以我必须根据参数 ex 在程序中添加条件。如果参数为“CENTRAL_FULFILMENT”,则需要为过滤器记录连接更多表,但如果参数为“STANDARD”,则需要在 where 子句中添加一些条件。
任何人都可以以一般方式帮助如何根据 if else 条件连接表以及如何根据不同的参数在 where 子句中添加过滤器。
谢谢。
我期待得到一个答案,如果我在调用过程时传递参数,那么根据参数,我需要连接不同的表,并需要在where子句中添加不同的条件。 请向我展示一些与此要求相关的示例。
答:
0赞
Bill Karwin
10/22/2023
#1
您有两种选择:
一种是根据条件运行不同的 SQL 查询。
CREATE PROCEDURE MyProc(IN shippingCompany VARCHAR(20))
BEGIN
CASE shippingCompany
WHEN 'CENTRAL_FULFILMENT' THEN
SELECT ... FROM table1 JOIN table2 ...;
WHEN 'STANDARD' THEN
SELECT ... FROM table1 WHERE ...conditions...;
ELSE
...some other SQL query...
END CASE;
END
另一种是根据条件构建一个字符串,然后使用 PREPARE 和 EXECUTE 将该字符串作为查询运行。
CREATE PROCEDURE MyProc(IN shippingCompany VARCHAR(20))
BEGIN
SET @sql = 'SELECT ... FROM table1';
CASE shippingCompany
WHEN 'CENTRAL_FULFILMENT' THEN
SET @sql = CONCAT(@sql, ' JOIN table2 ...');
WHEN 'STANDARD' THEN
SET @sql = CONCAT(@sql, ' WHERE ...conditions...');
END CASE;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
评论