PL/SQL 听课笔记

时间:2022-09-14 18:54:57

PL/SQL:

知识回顾:

 

  SQL:  结构化查询语言;

  T-SQL:  microsoft sql语言;

  PL/SQL: Oracle sql语言;

  变量命名规则:

    1.首字母必须是字母,可以包含字母,下划线,$,#,数字

    2.字符长度在30内

    3.不能为关键字,保留字

  命名规范:

    1.见名知意;       见书hibernate   p78;

    2.普通变量: v_变量名

    3.游标变量: cursor_变量名;

    4.参数变量:p_变量名;

  数据类型:

    标量类型

       timestamp:时间戳  比date更精确:精确到毫秒   lob类型

    属性类型    表名.列名%type

   变量赋值:

     硬编码:变量名:=值

    查询赋值:  select 列名         into 变量名     from 表名     where 条件

  begin  end中可以包含:

    DML:数据操作语言  >>del,insert,update

    不能写在begin end中:使用动态SQL:excute immediate (SQL);

     DDL:数据定义语言   >>create,drop,alter,truncate

    DCL:数据控制语言   >>grant,revoke

     DQL:数据查询语言   >>select    解决办法:游标;

  控制语句:

    if 布尔表达式

     循环:    loop     [exit 退出循环]    end loop;

    for loop         end loop;

  游标:

    声明: cursor cursor_表名    is    select * from 表名    --定义变量    表名%rowtype;

    》打开:begin     open 游标名;     end;

    》提取:fetch 游标名 into

    》关闭:close 游标名;

    for循环会隐式声名 记录类型 rowtype的循环变量   游标查询语句必须查询所有列(select *)   自动打开,提取关闭游标

   for v_row in (查询select) loop    v_row.列;   end loop;

   java中调用存储过程:

     CallableStatement  call=con.prepareCall("{call 存储名([参数1,参数2])}");

     // 填坑

     call.set....

     //注册输出参数类型

     call.registerOutParameter(2,OracleTypes.CURSOR);

     //获取输出值

      call.execute();

      //获取输出值

     ResultSet rs=(ResultSet)call.getObject(2);