Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在mysql workbench中调用过程_Java_Mysql_Database - Fatal编程技术网

Java 如何在mysql workbench中调用过程

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

我已经成功创建了这个过程,但是当我尝试调用它时,我得到了错误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 
    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.