设置显示执行时间
set timing on;
不显示:off
最简单的块:
begin dbms_output.put_line('Hello,World'); end;
执行结果出现这种情况(执行成功,但是不显示字符串):
这时的解决办法是:在执行块之前,先执行这条语句: set serveroutput on (可以理解为开关,把输出这个功能打开)
这时就成功了。
格式化命令:
设置每行显示的记录长度: SET LINESIZE 300
设置每页显示的记录长度:SET PAGESIZE 30
使用@执行程序
查看所有的数据表: SELECT * FROM tab;
查看当前的用户:show user
切换登陆用户: CONN 用户名/密码 【as sysdba】
对于每一张表,都有其属于的用户,不同的用户想要访问的其它用户的表,需要这张表的完整名称,及用户名.表名称
调用本机的指令,在前面加 HOST ,例如 HOST copy d:\demo.sql d:hello.sql
一.For循环游标
基本的步骤是: 1.定义游标----2.定义游标变量----3.循环游标
--声明游标 CURSOR cursor_Name IS select_sattement --For循环游标 --(1)定义游标 --(2)定义游标变量 --(3)使用For循环来使用这个游标 declare cursor c_job --定义游标 is select emp.empno,emp.ename,emp.job,sal from emp where job='MANAGER'; --定义游标变量 c_row c_job%rowtype; begin for c_row in c_job loop --循环游标 dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal); end loop; end;
二.Fetch游标
--Fetch游标 --使用的时候必须要明确的打开和关闭 declare cursor c_job is select empno,ename,job,sal from emp where job!='MANAGER'; c_row c_job%rowtype; begin open c_job; loop fetch c_job into c_row; exit when c_job%notfound; dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal); end loop; close c_job; end;
下面是一个根据日期,更新表中每一行的是周几的游标例子
--游标练习,根据日期,更新每行是周几 DECLARE CURSOR c_date IS select DIM_TIME.DATE_ID,DIM_TIME.YEAR_MONTH FROM DIM_TIME; c_row c_date%rowtype; begin for c_row in c_date loop update DIM_TIME set Dim_Time.Week_Name=to_char(to_Date(c_row.DATE_ID,'YYYYMMDD'),'DAY') where Dim_Time.Date_Id=c_row.Date_ID; end loop; end;