java - 从其他模式调用存储过程来创建表

标签 java mysql java-stored-procedures

我正在从事使用java开发的Web应用程序项目。在我的工作项目中, 我有这样的要求,比如我需要在用户注册后动态创建数据库。我已经完成了这种方法。

但是,现在我想调用另一个模式(主数据库)中可用的一个存储过程。存储过程包含表。现在,我想在动态创建的数据库中调用该过程。

我写了如下代码,谁能帮我知道这段代码有什么问题,

Connection c1 = DriverManager.getConnection(URL, USER, PASSWORD);
java.sql.CallableStatement cstmt=null;
System.out.println("Invoking the stored procedure from subscription DB........");      
String callSP="{call masterdb.createCorporateDBProc()};";
cstmt= c1.prepareCall(callSP);
cstmt.execute();

java.sql.CallableStatement cstmt=null;
try {
    System.out.println("Invoking the stored procedure from subscription DB........");      
    String callSP="{call subscription.createCorporateDBProc()}";
    cstmt = c1.prepareCall(callSP);
    int r = cstmt.executeUpdate();
    System.out.println("SP created"+r);
    System.out.println("SP invoked and executed successfully in corporate DB....");
}  catch(com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException e){
    e.printStackTrace();
    cstmt.close();
    c1.close();
}

最佳答案

请参阅 javadoc 的声明:

http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate%28java.lang.String%29

返回: (1) SQL 数据操作语言 (DML) 语句的行计数或 (2) 0(不返回任何内容的 SQL 语句)

这意味着执行 for procedure 将返回 0。如果调用成功,请检查您的数据库。

关于java - 从其他模式调用存储过程来创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21304504/

相关文章:

java - 为一个系列中的特定节点设置样式 - JavaFX

Java While 循环检查时间但不执行方法

java - Spring @Repository 和@Service

php - 如何使用 php 将使用 date() 函数创建的变量传递到 MYSQL 表

oracle - 从具有复杂输入和输出类型的 JDBC 调用 Oracle 存储过程

java - notificationDataSetChanged() 没有更新我的微调器的数组

mysql 日期列为空值的 PHP 空字符串错误

php - 仅显示查询表中存在的 MySQL 列

java - 为什么相同的代码在oracle存储的java过程中会比在常规java中慢?

database - 谁能说存储过程的优缺点和 Java 存储过程的优缺点?