类似SQL SERvER的MYSQL存储过程,带有IF-ELSE条件
在MySQL中,我不知道怎么做,我在谷歌上搜索它,但没有得到任何答案,请帮助我 我希望通过这种方式,如果我传递客户名称,那么我将按照客户名称数据获取。如果我传递null,那么我将获取所有客户数据类似SQL SERvER的MYSQL存储过程,带有IF-ELSE条件,mysql,mysql-workbench,Mysql,Mysql Workbench,在MySQL中,我不知道怎么做,我在谷歌上搜索它,但没有得到任何答案,请帮助我 我希望通过这种方式,如果我传递客户名称,那么我将按照客户名称数据获取。如果我传递null,那么我将获取所有客户数据 在sql server中,它对我有用,但在mysql中如何操作我不知道,因为我使用的是jsp,后端是mysql。您的代码中有一个错误,它必须来自而不是表单 在MySQL中,此过程按预期工作 Create Procedure spText(IN Cust_Name longtext) begin
在sql server中,它对我有用,但在mysql中如何操作我不知道,因为我使用的是jsp,后端是mysql。您的代码中有一个错误,它必须来自而不是表单 在MySQL中,此过程按预期工作
Create Procedure spText(IN Cust_Name longtext)
begin
Declare
@varWhere varchar(max)= ' WHERE Cust_No is not null ' + Char(13),
@varSQL varchar(Max)
SET @varSQL='select * form Customer_Dtls'
if Cust_Name is not null
BEGIN
set @varWhere=@varWhere + ' and Custer_Nm like %Cust_Name%' + Char(13)
end
EXEC (@varSQL + @varWhere)
end
nbk sir完美地回答我的问题谢谢你sir还有一个如何在JSP页面结果集中使用此存储过程请更新我sir请看这里,这里有更多指向它的链接sir获取问题“不支持可调用状态”MYCONNECTION IS String driver=“com.mysql.jdbc.driver”;String url=“jdbc:mysql://localhost:3306/MyNew_db" ; 字符串uname=“root”;字符串pass=“123456”;Class.forName(driver.newInstance();con=DriverManager.getConnection(url、uname、pass);请检查这个小教程,据我所知,它只是一些更多的解释相同。如果它仍然不起作用,请使用源代码提出一个新问题,我们将找到解决方案
DROP procedure IF EXISTS `spText`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `spText`(IN Cust_Name longtext)
BEGIN
SET @varWhere = ' WHERE Cust_No is not null ' ;
SET @varSQL='select * FORM Customer_Dtls ';
IF Cust_Name is not null THEN
set @varWhere= CONCAT(@varWhere, " and Custer_Nm like '%Cust_Name%'");
END IF;
SET @SQL= CONCAT(@varSQL , @varWhere);
PREPARE stmt FROM @SQL;
EXECute stmt;
end$$
DELIMITER ;