zoukankan      html  css  js  c++  java
  • 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程序:

    累了,想想,生活中充满诗和远方,亦不乏仓央嘉措的妙音天女。
  • 相关阅读:
    How to Get Started With AIOps
    第六部分 实现细节
    第一部分 概览
    第五部分 软件架构
    vs2010 sqlite guid 问题
    cordova(phonegap)+qjm 一统天下
    jQuery调用WebServices总是出错问题解决
    phonegap中http链接自动调用本地浏览器解决办法
    MSSQL省市数据库
    博客的第一篇
  • 原文地址:https://www.cnblogs.com/ztyy04126/p/4891494.html
Copyright © 2011-2022 走看看