0

Oracle 10g のストアド プロシージャ名 (mytable1) を JDBC 経由で呼び出したい。その方法を教えてください。(私は struts2 プログラムでこのコードを使用しています)

import java.sql.*;
public class loginuser 
{
public String username;
public String password;
public String execute()
{       

Connection con;
Statement stmt;
ResultSet rs;
try

import java.sql.*;
public class loginuser 
{
public String username;
public String password;
public String execute()
{       

Connection con;
Statement stmt;
ResultSet rs;
try
{

Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","Gaurav","oracle");
stmt=con.createStatement();
rs=stmt.executeQuery(" HOW TO CALL A PROCEDURE ? ");

}
catch(ClassNotFoundException e)
{

}
catch(SQLException ex)
{
}
}
public String getpassword()
{
        return password;
    }
   public void setpassword(String m)
{
        this.password = m;
}

public String getusername() {
return username;
}

public void setusername(String username) {
this.username = username;
}
}

--以下は私が呼び出したい手順です------------------

CREATE  or replace PROCEDURE mytable1 (tname varchar2)
is
stmt varchar2(1000);
begin
stmt := 'CREATE TABLE '||tname || '(username varchar2(20) ,password varchar2 (10))';
execute immediate stmt;
end;
4

1 に答える 1

0

厄介な方法:(これには既存の stmt および rs 変数を使用できます)

String query = "begin mytable1(?, ?); end;";
rs=stmt.executeQuery(query);

良い方法:

//mytable1 is a stored procedure
String mytable1Sql = "{call mytable1(?)}";
CallableStatement callableStatement = dbConnection.prepareCall(mytable1Sql);
callableStatement.setString(1, "whatever");
// no out parameters, but i'll leave this in so you can see it.
// callableStatement.registerOutParameter(2, java.sql.Types.VARCHAR);

// execute mytable1 stored procedure
callableStatement.executeUpdate();

// no out parameters, but i'll leave this in so you can see it.
// String userName = callableStatement.getString(2);

そうは言っても、ストアド プロシージャを使用してテーブルを作成することは一般的にお勧めしません。

于 2014-07-03T21:01:58.623 に答える