Javaオペレーションストアド・プロシージャ1
4197 ワード
一:ストレージプロセスの概要
ストアド・プロシージャとは、特定の機能を完了するSQL文セットのセットです.
Google.comを利用して、baidu.comは多くの検索ができます
インターネットから:
と書く
ストアド・プロシージャ(Stored Procedure)は、特定の機能を果たすためのSQL文セットのセットであり、SQL Serverが提供するTransact-SQL言語を利用して作成されるプログラムである.機能は、よく使われる作業や複雑な作業をSQL文で書いて指定した名前で保存しておき、後で定義したストレージ・プロシージャと同じ機能をデータベースに提供する必要がある場合はexecuteを呼び出すだけでコマンドを自動的に完了します.ストレージ・プロシージャは、コンパイルおよび最適化された後にデータベース・サーバに格納されるフロー制御およびSQL文によって書かれたプロシージャであり、アプリケーションが呼び出しによって実行し、ユーザーが変数を宣言できるようにします.また、ストレージ・プロシージャは、パラメータを受信して出力し、ストレージ・プロシージャを実行するステータス値を返すことも、呼び出しをネストすることもできます.
http://baike.baidu.com/view/68525.htm
二:Java操作ストレージプロセス
JAvaがストレージプロセスを操作するのは主にJDBCによって操作されます.
1)Javaがストアド・プロシージャを実行して返した結果セットgetXXXXを使用してデータを取得する
2)ストアド・プロシージャを実行し、ストアド・プロシージャの結果セットを返す
3)ストアド・プロシージャを実行し、複数のストアド・プロシージャ結果セットを返す
ストアド・プロシージャとは、特定の機能を完了するSQL文セットのセットです.
Google.comを利用して、baidu.comは多くの検索ができます
インターネットから:
と書く
ストアド・プロシージャ(Stored Procedure)は、特定の機能を果たすためのSQL文セットのセットであり、SQL Serverが提供するTransact-SQL言語を利用して作成されるプログラムである.機能は、よく使われる作業や複雑な作業をSQL文で書いて指定した名前で保存しておき、後で定義したストレージ・プロシージャと同じ機能をデータベースに提供する必要がある場合はexecuteを呼び出すだけでコマンドを自動的に完了します.ストレージ・プロシージャは、コンパイルおよび最適化された後にデータベース・サーバに格納されるフロー制御およびSQL文によって書かれたプロシージャであり、アプリケーションが呼び出しによって実行し、ユーザーが変数を宣言できるようにします.また、ストレージ・プロシージャは、パラメータを受信して出力し、ストレージ・プロシージャを実行するステータス値を返すことも、呼び出しをネストすることもできます.
http://baike.baidu.com/view/68525.htm
二:Java操作ストレージプロセス
JAvaがストレージプロセスを操作するのは主にJDBCによって操作されます.
1)Javaがストアド・プロシージャを実行して返した結果セットgetXXXXを使用してデータを取得する
package com.saas.jdbc;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.Types;
public class TestProcedureDemo01 {
public static String _URL="jdbc:mysql://127.0.0.1:3306/shopping_thpad_com?useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true";
public static String _LOGIN_NAME="root";
public static String _LOGIN_PASSWORD="123456";
private static Connection connect = null;
private CallableStatement cstmt =null;
private ResultSet rs = null;
/**
*
* @return
*/
public static Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e) {
e.printStackTrace();
}
try {
connect = DriverManager.getConnection(_URL, _LOGIN_NAME, _LOGIN_PASSWORD);
}
catch(SQLException e) {
e.printStackTrace();
}
return connect;
}
/**
* executeUpdate()
*/
public void execCall() {
connect = getConnection();
try {
cstmt = connect.prepareCall("{call test6(?,?)}");
cstmt.setString(1, " "); //
cstmt.registerOutParameter(2, Types.INTEGER); //
int i = cstmt.executeUpdate();
System.out.println(cstmt.getInt(2)); //
cstmt.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
/**
*
*/
public void doClose() {
try {
if(null!=rs) {
rs.close();
rs=null;
}
if(null!=cstmt) {
cstmt.close();
cstmt=null;
}
if(null!=connect) {
connect.close();
connect=null;
}
}
catch(SQLException e) {
e.printStackTrace();
}
}
public static void main(String[]args) {
TestProcedureDemo01 test = new TestProcedureDemo01();
test.getConnection();
test.execCall();
test.doClose();
}
}
DELIMITER $$
USE `shopping_thpad_com`$$
DROP PROCEDURE IF EXISTS `test6`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `test6`(IN in_name VARCHAR(20) CHARACTER SET utf8,OUT count_num INT)
BEGIN
/* */
DECLARE max_id INT ;
DECLARE f_num FLOAT;
DECLARE f_num_1 FLOAT DEFAULT 0;
DECLARE f_num_2 FLOAT DEFAULT 2;
DECLARE v_age VARCHAR(5) CHARACTER SET utf8 DEFAULT '25' ;
DECLARE v_sex VARCHAR(10) CHARACTER SET utf8 DEFAULT ' ';
DECLARE create_date DATETIME DEFAULT NOW();
SELECT MAX(trade_id)+1 INTO max_id FROM test_proc ORDER BY create_date DESC LIMIT 1;
INSERT INTO test_proc(trade_id,NAME,age,sex,create_date) VALUES(max_id,in_name,v_age,v_sex,create_date);
SELECT COUNT(trade_id) INTO count_num FROM test_proc;
END$$
DELIMITER ;
2)ストアド・プロシージャを実行し、ストアド・プロシージャの結果セットを返す
3)ストアド・プロシージャを実行し、複数のストアド・プロシージャ結果セットを返す