java 호출oracle 저장 프로세스 요약
15964 단어 oracle 저장 프로세스
CREATE OR REPLACEPROCEDURE
(
1 IN NUMBER,
2 IN NUMBER
) IS
1 INTEGER :=0;
2 DATE;
BEGIN
END
2. SELECT INTO STATEMENT는 select 조회의 결과를 변수에 저장합니다. 여러 열을 여러 변수에 동시에 저장할 수 있습니다. 기록이 있어야 합니다. 그렇지 않으면 예외를 던집니다. (기록이 없으면 NO DATA FOUND를 던진다) 예:
BEGIN
SELECT col1,col2 into 1, 2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
1: 반환 값이 없는 저장 프로세스 저장 프로세스는 다음과 같습니다.
CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS
BEGIN
INSERT INTO HYQ.B_ID (I_ID,I_NAME) S (PARA1, PARA2);
END TESTA;
그리고 자바에서 호출할 때 다음 코드를 사용합니다.
package com.hyq.src;
import java.sql.*;
import java.sql.ResultSet;
public class TestProcedureOne {
public TestProcedureOne() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
CallableStatement cstmt = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");
proc.setString(1, "100");
proc.setString(2, "TestOne");
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) {
}
}
}
}
당연하죠. 먼저 테이블 TESTTB, 안에 두 개의 필드 (I ID, I NAME) 를 만들어야 합니다.2. 반환 값이 있는 저장 프로세스(비목록)는 다음과 같다.
CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS
BEGIN
SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;
END TESTB;
자바에서 호출할 때 다음 코드를 사용합니다.
package com.hyq.src;
public class TestProcedureTWO {
public TestProcedureTWO() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call HYQ.TESTB(?,?) }");
proc.setString(1, "100");
proc.registerOutParameter(2, Types.VARCHAR);
proc.execute();
String testPrint = proc.getString(2);
System.out.println("=testPrint=is="+testPrint);
}
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) {
}
}
}
}
}
주의, 여기 프로c.get String (2) 의 수치 2는 임의가 아니라 저장 과정 중의 out열과 대응합니다. 만약 out이 첫 번째 위치에 있다면 proc입니다.getString(1), 세 번째 위치라면 proc.getString(3), 물론 여러 개의 반환 값도 동시에 있을 수 있습니다. 그것은 바로 아웃 파라미터를 몇 개 더 추가하는 것입니다.3. 반환 목록은oracle 저장 프로세스에 반환 값이 없기 때문에 모든 반환 값은out 매개 변수를 통해 대체됩니다. 목록 역시 예외가 아니지만 집합이기 때문에 일반적인 매개 변수를 사용할 수 없습니다.pagkage를 사용해야 합니다.그래서 두 부분으로 나뉘어야 한다. 하나, 프로그램 패키지를 만들어야 한다.다음과 같습니다.
CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;
2, 저장 프로세스를 설정합니다. 저장 프로세스는 다음과 같습니다.
CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;
END TESTC;
이것은 커서 (바늘로 이해할 수 있음) 를 out 매개 변수로 값을 되돌려 주는 것을 볼 수 있다.자바에서 호출할 때 다음 코드를 사용합니다.
package com.hyq.src;
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 TestProcedureTHREE {
public TestProcedureTHREE() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "hyq", "hyq");
CallableStatement proc = null;
proc = conn.prepareCall("{ call hyq.testc(?) }");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet)proc.getObject(1);
while(rs.next())
{
System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");
}
}
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) {
}
}
}
}
이 곳에서 실행하기 전에oracle의 드라이브 패키지를class 경로에 넣어야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
oracle 저장 프로세스의 기본 문법1. 저장 프로세스의 구문 구조: CREATE OR REPLACE PROCEDURE 프로세스 이름 AS 성명 문장 단락; BEGIN 문장 세그먼트 실행하기; EXCEPTION 이상 처리 문장 단락; END; 2、SE...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.