如何在mysql中创建存储过程并在JAVA中调用它。我需要一些关于创建可调用过程的帮助。下面是我的代码

如何在mysql中创建存储过程并在JAVA中调用它。我需要一些关于创建可调用过程的帮助。下面是我的代码,java,mysql,Java,Mysql,请帮助任何解决方案如何创建和调用它。提前感谢也许您可以使用以下示例作为参考: 以下是存储过程本身: drop PROCEDURE if exists insert_poo; DELIMITER $$ CREATE PROCEDURE insert_poo(IN barcode varchar(250),IN qty float,IN amount float,IN vat float,IN description varchar(250),IN clrk_code varchar(20

请帮助任何解决方案如何创建和调用它。提前感谢

也许您可以使用以下示例作为参考:

以下是存储过程本身:

 drop PROCEDURE if exists insert_poo;
 DELIMITER $$

 CREATE PROCEDURE insert_poo(IN barcode varchar(250),IN qty float,IN amount float,IN vat float,IN 
description varchar(250),IN clrk_code varchar(20),IN mechno varchar(20),IN bill_date datetime)
BEGIN
DECLARE unit_pric float;
DECLARE itemcode varchar(150);
SET  unit_pric =(select retail1 FROM `mytable` WHERE  `mytable`.barcode = barcode);
SET  itemcode =(select prod_id FROM `mytable` WHERE `mytable`.barcode = barcode);
INSERT into mytable2(clrk_code,tran_code,tran_desc,tran_qty,unit_price,tran_amt,bill_date,tax)values(clrk_code,barcode,description,qty, unit_pric,amount,bill_date,vat)

END $$
DELIMITER ;
下面是使用上一个SP的Java方法调用:

connect anyDbName/anyDbName

CREATE OR REPLACE PROCEDURE any_storeProcedure_name


-- Following are some example parameters you may use in your SP
(
  id varchar2,
  name_param            varchar2,

-- The control status of the operation
   statusOperation_out   OUT   VARCHAR2
)

AS
BEGIN
    statusOperation_out := 'in_proccess';

  insert into property_name       values('Name',        id, name_param);

  COMMIT;
statusOperation_out := 'ok';


EXCEPTION 
  WHEN OTHERS THEN
  statusOperation_out := 'error';
      ROLLBACK;
END;
/
希望这能给我一些参考,顺便说一下,我使用的数据库是Oracle11g。但我记得它与MySQL数据库非常相似

public long addProperties(String id, String  name) {


        //The string sql syntax for calling the store procedure
        String sql = "{CALL any_storeProcedure_name("
                + "id    => ?, "
                + "name  => ?)}";

        try (Connection conn = CreateConnection.getDSConnection();
                CallableStatement cs = conn.prepareCall(sql)) {


            //The following are the parameters for the store procedure
            cs.setString    (1, id);
            cs.setString    (2, name);

            //Following are the parameters to get some outputs from the store procedure
            cs.registerOutParameter(3, Types.VARCHAR);

            cs.executeQuery();

            //The return varible from the store procedure is the one
            //that is being used for feedback on whether the SP ran fine. 
            if (cs.getString(3).equalsIgnoreCase("ok")) {
                System.out.println("Feedback from SP is: " + cs.getString(3));
                return 1;
            } else {
                return 0;
            }

        } catch (SQLException e) {
            e.printStackTrace();
            return 0;
        }
    }