过程
过程是为了执行一定任务而组合在一起的SQL语句和PLSQL语句。(个人理解过程就是ORACLE的程序(或者说是方法、函数))
只有输入参数时候的例子
创建存储过程
创建或替换一个存储过程myproc
参数为id ORACLE中参数默认为输入参数 in (之后用is 或者 as 都可以)
CREATE or replace procedure myproc(id in varchar2)
Is
定义一个变量 注意:定义变量一定要给出长度,参数可以不给出长度
Name varchar2(10);
Begin
将books_name放置到变量里面
Select books_name into Name form books where books_id = id;
Dbms_Output.put_line(Name);
End myproc;
执行存储过程
Declare
定义变量
Tid vachar2(10);
Begin
赋值
Tid := ‘001’;
Myproc(Tid);
End;
完整内容:
CREATE or replace procedure myproc(idcs in varchar2)
Is
Namebl varchar2(10);
Begin
select name into Namebl from test where id = idcs;
Dbms_Output.put_line(Namebl);
End myproc;
Declare
Tid integer(10);
Begin
Tid := 1;
Myproc(Tid);
End;
或者
Begin
Myproc(1);
End;
JAVA程序
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;
public class TestProcedureOne {
public TestProcedureOne() {
}
public static void main(String args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@192.168.10.216:1521:ctbu";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
CallableStatement cstmt = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "dbname", "password");
CallableStatement proc = null;
proc = conn.prepareCall("{ call TESTA(?,?) }");
proc.setString(1, 1);
proc.setString(2, "232323");
proc.execute();
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}