/* 授权命令 grant 权限 to 用户 授权可以授予多个权限 grant connect,resource to baidu 收回权限 revoke 权限 from 用户 revoke dba from baidu 创建用户 分配表空间--指定用户的默认表空间 create table p(..) 建表存在默认表空间 --建表时候指定表空间 create table p(...) talebspace 表空间名 */ /* PlSql编程语言 procedure language 过程语言 是在sql语句中加入一些处理过程的语句 常见的条件表达式 if else 还有循环结构 基本结构 declare --声明部分 理解为定义 --声明使用的变量 begin --处理逻辑的代码块 end; */ --psSql简单示例 declare v_n number := 1; --声明数值变量 赋值使用符号:= v_s varchar2(4) :='s'; --声明字符类型变量 emp_ename emp.ename%type ;-- 引用类型变量 emp_row emp%rowtype ;-- 记录类型变量 begin dbms_output.put_line('v_n====='||v_n); --输出语句相当于sys out dbms_output.put_line('v_s====='||v_s); select ename into emp_ename from emp where empno=7499; --使用into关键字赋值 dbms_output.put_line('emp_ename====='||emp_ename); select * into emp_row from emp where empno = 7499; --赋值记录类型变量 dbms_output.put_line('员工编号=='||emp_row.empno||'员工姓名'||emp_row.ename); end; /* plsql 的条件表达式判断 if .. 处理语句 else if ..处理语句 ------------------------- if .. then elsif .. then else end if; */ ---使用条件表达式判断员工的工资 使用汉字输出 declare emp_row emp%rowtype ;-- 记录类型变量 begin select * into emp_row from emp where empno = 7499; --赋值记录类型变量 --使用表达式判断工资 if emp_row.sal > 3000 then dbms_output.put_line('员工工资大于3000=='||emp_row.sal); elsif emp_row.sal < 1000 then dbms_output.put_line('员工工资小于1000=='||emp_row.sal); else dbms_output.put_line('员工工资位于1000到3000之间=='||emp_row.sal); end if; end; /* 循环结构 第一种----- loop exit when 条件 end loop; 第二种 --- while 条件 loop end loop; 第三种 --- for 变量 in 范围 loop end loop; */ -------使用循环输出数字 1-----10 /* 第一种 loop exit when 条件 end loop; */ declare v_n number :=1; begin loop --只是用来判断退出使用的,并不是相当于if()else{} exit when v_n>10 ; --退出条件 dbms_output.put_line(v_n); v_n:=v_n+1; --自增 end loop; end; /* 第二种 while 条件 loop end loop; */ declare v_n number :=1; begin while v_n<11 loop dbms_output.put_line(v_n); v_n:=v_n+1; --自增 end loop; end; /* 第三种 for 变量 in 范围 loop 变量的声明和范围的控制是由for循环自动执行 end loop; */ declare begin for i in 1..10 loop dbms_output.put_line(i); end loop; end; /* 游标 光标 是用于接收查询的记录结果集 ResultSet 提示记录使用.next() 游标的使用步骤 声明游标 cursor 游标名 is select 语句 指定游标的记录结果集 打开游标 open 游标名 提取游标 fetch 游标名 into 记录类型变量 关闭游标 close cursor 游标的两个属性 游标名%found : 判断它有找到 游标名%notfound : 判断它没有找到 if emp_cursor%found then dbms_output.put_line('found'); elsif emp_cursor%notfound then dbms_output.put_line('notfound'); elsif emp_cursor%notfound is null then dbms_output.put_line('null'); end if; */ --使用while循环结构演示游标 declare --声明游标 cursor emp_cursor is select * from emp; --声明记录类型变量 用于接收游标提取的记录 emp_row emp%rowtype; begin --打开游标 open emp_cursor; --提取游标(判断下一个是否有值) fetch emp_cursor into emp_row ; --有值就执行while循环 while emp_cursor%found loop dbms_output.put_line(emp_row.empno||'员工姓名'||emp_row.ename); --继续提取游标(并判断下一个是否有值) fetch emp_cursor into emp_row ; end loop; close emp_cursor; end; /* loop exit when 游标提取不到 end loop */ declare --声明游标 cursor emp_cursor is select * from emp; --声明记录类型变量 用于接收游标提取的记录 emp_row emp%rowtype; begin --打开游标 open emp_cursor; loop fetch emp_cursor into emp_row; exit when emp_cursor%notfound; dbms_outpu