oracle pl/sql之sql语法

pl/sql块由三个部分构成:定义部分、执行部分、例外处理部分.如下所示:

declear

/*定义部分-----定义常量、变量、游标、例外、复杂数据类型*/

begin

/*执行部分-----要执行的pl/sql语句和sql语句*/

exception

/*例外处理部分----处理运行的各种错误*/

end;

1,

DECLARE
  salk NUMBER;
BEGIN
  SELECT sal INTO salk FROM emp WHERE ename='KING';
  dbms_output.put_line(salk);
  END;

2,

DECLARE
 TYPE my_record IS RECORD(
     record_empno emp.empno%TYPE,
     record_ename emp.ename%TYPE,
     record_job emp.job%TYPE,
     record_mgr emp.mgr%TYPE,
     record_hiredate emp.hiredate%TYPE,
     record_sal emp.sal%TYPE,
     record_comm emp.comm%TYPE,
     record_deptno emp.deptno%TYPE
 );
 i_record my_record;
 
 BEGIN
   SELECT * INTO i_record FROM emp WHERE emp.empno=7369;
   dbms_output.put_line(i_record.record_ename);
   END;

3,

DECLARE
deptnono emp.empno%TYPE:=&NO;

BEGIN
   dbms_output.put_line(deptnono);
  END;

4,建立一个简单的procedure

CREATE PROCEDURE pro2 IS
  BEGIN
    INSERT INTO emp(empno,ename) VALUES(777,'zt');
    END;

注意:需要在pl/sql执行exec pro2,这样procedure才会提交

跟java程序连接

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class proinjava {
    public static void main(String args[]){
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection co=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
            CallableStatement ct=co.prepareCall("{call pro2}");
            ct.execute();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
注意:在myeclipse中执行,他需要等待pl/sql的事物提交,所以需在pl/sql中的command window中commit一下,程序才会执行

 5,精进版

①请考虑编写一个过程,可以输入雇员名,新工资 可修改雇员的工资

②如何调用过程有两种方法:

  exec .. call

pl/sql程序:

java程序:

累了,想想,生活中充满诗和远方,亦不乏仓央嘉措的妙音天女。
原文地址:https://www.cnblogs.com/ztyy04126/p/4891494.html