oracle PL SQL学习案例(一)
【示例1.1】 查询雇员编号为7788的雇员姓名和工资。
步骤1:用SCOTT/TIGER账户登录SQL*Plus。
步骤2:在输入区输入以下程序:
/*这是一个简单的示例程序*/
SET SERVEROUTPUT ON
DECLARE--定义部分标识
v_name VARCHAR2(10); --定义字符串变量v_name
v_sal NUMBER(5); --定义数值变量v_sal
BEGIN --可执行部分标识
SELECT ename,sal
INTO v_name,v_sal
from emp
WHERE empno=7788;
--在程序中插入的SQL语句
DBMS_OUTPUT.PUT_LINE('7788号雇员是:'||v_name||',工资为:'||to_char(v_sal));
--输出雇员名和工资
END; --结束标识
步骤3:按执行按钮或F5快捷键执行程序。
输出的结果是:
7788号雇员是:SCOTT,工资为:3000
PL/SQL 过程已成功完成。
======================================================================================================================
【示例2.1】 变量的定义和初始化。
输入和运行以下程序:
SET SERVEROUTPUT ON
DECLARE --声明部分标识
v_job VARCHAR2(9);
v_count BINARY_INTEGER DEFAULT 0;
v_total_sal NUMBER(9,2) := 0;
v_date DATE := SYSDATE + 7;
c_tax_rate CONSTANT NUMBER(3,2) := 8.25;
v_valid BOOLEAN NOT NULL := TRUE;
BEGIN
v_job:='MANAGER';
--在程序中赋值
DBMS_OUTPUT.PUT_LINE(v_job);
--输出变量v_job的值
DBMS_OUTPUT.PUT_LINE(v_count);
--输出变量v_count的值
DBMS_OUTPUT.PUT_LINE(v_date);
--输出变量v
相关文档:
1.曾经不小心把开发库的数据库表全部删除,当时吓的要死。结果找到下面的语句恢复到了1个小时之前的数据!很简单。
注意使用管理员登录系统:
select * from 表名 as of timestamp sysdate-1/12 //查询两个小时前的某表数据!既然两小时以前的数据都得到了,继续怎么做,知道了吧。。
如果drop了表,怎么办??见下 ......
Oracle中to_date()与24小时制表示法及mm分钟的显示:
在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会和我一样,直觉的采用“yyyy-MM-dd HH:mm:ss”的格式
作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。如:
to_date('2005-01-01 13:14:20 ......
数据库数据
ID
UserName
Date
1
User1
2010/4/27
1
User1
2010/4/11
1
User1
2010/4/1
要求:
获取最新日期的一条数据
Sql语句:
select t.* from tb t where date = (select max(date) from tb where id = t.id) order by t.id ......