#sql { CREATE TABLE addresses ( id NUMBER CONSTRAINT addresses_pk PRIMARY KEY, customer_id NUMBER CONSTRAINT addresses_fk_customers REFERENCES customers(id), street VARCHAR2(255) NOT NULL, city VARCHAR2(255) NOT NULL, state CHAR(2) NOT NULL, country VARCHAR2(255) NOT NULL ) };트랜잭션
#sql { COMMIT [WORK] }; #sql { ROLLBACK [WORK] };
Java Programming with Oracle SQLJ | ||
#sql { INSERT INTO customers (id, first_name, last_name, dob, phone) VALUES ("7", "John", "Smith", "01-JAN-1970", "650-555-1212") }; #sql { ROLLBACK };이 예제에서는 customers 테이블에 한 행이 입력되고 ROLLBACK문의 결과로 입력이 취소된다.
Oracle.connect( "jdbc.oracle.thin:@localhost:1521:orcl", "fundamental_user", "fundamental_password", true );이러한 연결을 통해 수행되는 모든 SQL문 다음에는 SQLJ에서 자동으로 COMMIT문을 수행한다. 즉, 각 SQL문은 문장 자체가 하나의 트랜잭션이다. SQLJ에서 COMMIT문을 수행하기 때문에 프로그램에서 COMMIT문을 수행할 필요가 없다.
/* The program FundamentalExample1.sqlj illustrates how to connect to a database, how to embed SQL DML operations in SQLJ executable statements, and how to use host expressions. */ // import required packages import java.sql.*; import oracle.sqlj.runtime.Oracle; public class FundamentalExample1 { public static void main(String [] args) { try { Oracle.connect( "jdbc:oracle:thin:@localhost:1521:orcl", "fundamental_user", "fundamental_password" ); // add a new customer int customer_id = 6; String first_name = "Jerry"; String last_name = "Fieldtop"; Date dob = new Date(80, 1, 1); String phone = "650-555-1222"; #sql { INSERT INTO customers (id, first_name, last_name, dob, phone) VALUES (:customer_id, :first_name, :last_name, :dob, :phone) }; // display new customer #sql { SELECT first_name, last_name, dob, phone INTO :first_name, :last_name, :dob, :phone FROM customers WHERE id = :customer_id }; System.out.println("Customer with id " + customer_id + " has the following details:"); System.out.println(" First name: " + first_name); System.out.println(" Last name: " + last_name); System.out.println(" DOB: " + dob); System.out.println(" Phone: " + phone); // delete the customer #sql { DELETE FROM customers WHERE id = :customer_id }; // commit the transaction #sql { COMMIT }; // update the first product price int product_id = 1; double product_price = 11.25; #sql { UPDATE products SET price = :product_price WHERE id = :product_id }; // display the first product int type_id = 0; String name = null; String description = null; double price = 0.0; #sql { SELECT type_id, name, description, price INTO :type_id, :name, :description, :price FROM products WHERE id = :product_id }; System.out.println("Product with id " + product_id + " has the following details: "); System.out.println(" Type id: " + type_id); System.out.println(" Name: " + name); System.out.println(" Description: " + description); System.out.println(" Price: " + price); // rollback the update #sql { ROLLBACK }; // create a table to hold customer addresses #sql { CREATE TABLE addresses ( id NUMBER CONSTRAINT addresses_pk PRIMARY KEY, customer_id NUMBER CONSTRAINT addresses_fk_customers REFERENCES customers(id), street VARCHAR2(255) NOT NULL, city VARCHAR2(255) NOT NULL, state CHAR(2) NOT NULL, country VARCHAR2(255) NOT NULL ) }; System.out.println("Successfully created addresses table."); // drop the addresses table #sql { DROP TABLE addresses }; } catch ( SQLException e ) { System.err.println("SQLException " + e); } finally { try { Oracle.close(); } catch ( SQLException e ) { System.err.println("SQLException " + e); } } } // end of main() }
관련 기사: "SQLJ를 배우자!" 시리즈 SQLJ 프로그램 개발을 위한 환경 설경하기 SQLJ를 배우자! - DML 문 |
sqlj FundamentalExample1.sqljsqlj 명령라인 유틸리티는 FundamentalExample1.sqlj 파일을 SQLJ 런타임 라이브러리 호출을 포함하는 FundamentalExample1.java 파일로 변환한다. 그리고 FundamentalExample.java를 FundamentalExample.class 파일로 컴파일하기 위해 자바 컴파일러인 javac를 호출한다. 필자는 SQLJ 시리즈의 첫 번째 기사인 "SQLJ 프로그램 개발을 위한 환경설정하기"에서 sqlj 명령 및 변환 프로세스에 대해 상세히 다루었다. FundamentalExample 클래스를 실행하면 아래와 같은 내용이 화면에 출력될 것이다.
Customer with id 6 has the following details: First name: Jerry Last name: Fieldtop DOB: 1980-02-01 Phone: 650-555-1222 Product with id 1 has the following details: Type id: 1 Name: Beyond Understanding Description: The frontiers of human knowledge Price: 11.25 Successfully created addresses table.필자는 이 기사가 독자들에게 유익하고 재미있는 정보를 제공했기를 바라며 SQLJ에 대한 더 상세한 정보는 『Java Programming with Oracle SQLJ』를 참고하기 바란다.
이전 글 : 에릭 하게만 시리즈 1 - 수치처리 파이썬의 기초
다음 글 : 다중 엔티티 프로그래밍
최신 콘텐츠