Java 如何在mysql workbench中调用过程
我已经成功创建了这个过程,但是当我尝试调用它时,我得到了错误1305,函数database.temp不存在。我试图使用以下语句调用:Java 如何在mysql workbench中调用过程,java,mysql,database,Java,Mysql,Database,我已经成功创建了这个过程,但是当我尝试调用它时,我得到了错误1305,函数database.temp不存在。我试图使用以下语句调用: DELIMITER // CREATE PROCEDURE temp ( empId INT) BEGIN DECLARE var_etype VARCHAR(36); SELECT emptype = QOUTE(emptype) FROM dms_document WHERE id = empid; SELECT
DELIMITER //
CREATE PROCEDURE temp ( empId INT)
BEGIN
DECLARE var_etype VARCHAR(36);
SELECT
emptype = QOUTE(emptype)
FROM
dms_document
WHERE
id = empid;
SELECT
emptype,
CASE
WHEN emptype = 'P' THEN doctype
ELSE 'No Documents required'
END
FROM
dms_report
WHERE
pilot = 1;
End//
DELIMITER ;
但是我有一个错误,请告诉我哪里出了错。MySQL的文档很好地解释了必要的步骤
这就是java代码需要的样子:
SET @increment = '1';
select temp( @increment)
如果要在Java代码中处理存储过程查询返回的行,还需要创建一个OUT
参数,如MySql的文档页面中所述,标题为:
要从MySQL工作台调用存储过程,请使用call
命令。您可以通过直接设置每个参数的值来调用存储过程:
CALL can pass back values to its caller using parameters that are
declared as OUT or INOUT parameters
然后,只需使用SELECT
语句返回输出参数的值
SET @increment = 1;
CALL temp(@increment)
通过帮助设置输出参数,请阅读本文
您的存储过程在语法上是错误的,如注释中所述,您没有按照预期用途使用存储过程功能。它旨在用于数据操作,而不是查询。相反,你应该考虑把你的程序变成一系列准备好的语句。
如果您有任何问题,请告诉我 这就是您如何称呼它,使用关键字
call
,然后使用过程的名称
SELECT @outParameter
打一个字符串
call procedureName(params);
但是我想在SqlWorkBEnch中执行它,而不是像call temp(1)这样的java代码;但是我在路由时出错,因为我让tempstoreprocdureUpdated更新了答案,您仍然需要在存储过程中定义一个OUT参数。如果您有任何问题,请告诉我!:O) 设置@increment='1';像这样调用temp(@increment),我正在尝试,但仍然遇到相同的问题。这是因为您的存储过程在某些情况下语法错误。您不能写入:选择emptype=QOUTE(emptype),以及后面的语句,您还需要输出参数。您的所有SP都将正常工作。如果您还有其他问题,请告诉我!我们必须设置什么输出参数
call procedureName(params);
String sqlString = "procedureName("+?+")"; //in case of Integers
String sqlString = "procedureName('"+?+"')";//in case of Integers
bring the parameter in prepared statement.