易截截图软件、单文件、免安装、纯绿色、仅160KB

ORACLE PL/SQL 对象(object)学习笔记(一)

 1、对象类型规范
 
创建对象类型规范的语法如下
 
CREATE [OR REPLACE] TYPE [schema.] type_name
[AUTHID {CURRENT_USER|DEFINER}] AS OBJECT (
Attribute1 datatype,
[attribute2 datatype,…]
[method 1]
[method 2]);
/

 
 
 
其中AUTHID指示将来执行该方法时,必须使用在创建时定义的CURRENT_USER或DEFINER的权限集合。CURRENT_USER是调用该方法的用户,DEFINER是该对象类型的所有者。
 
1)属性
属性的声明有一些限制,包括:
 
属性的声明必须出现在方法的声明以前。
数据类型可以是任何数据库数据类型,但是不能包括ROWID,UROWID,LONG,LONG RAW,NCHAR,NCLOB,NVARCHAR2类型,以及PL/SQL的专用类型或在PL/SQL包中定义的类型。
不能使用那些只能在PL/SQL中使用而不能在数据库中使用的数据类型。这些类型包括BINARY_INTEGER,BOOLEAN,PLS_INTEGER,RECORD和REF CURSOR。
不能使用NOT NULL约束,但是可以通过在对象实例上定义一个数据库触发器来达到相同效果。
属性列表中至少必须有一个属性。
不能使用默认值。
 
注意:不能直接在属性或对象类型上使用%TYPE和%ROWTYPE。但是可以在对象实例的属性上使用它们。
 
-- This example works fine. %TYPE is applied
-- to the variable, not the object type.


DECLARE
v_discount_price discount_price_obj;
v_price v_discount_price.price%TYPE;
BEGIN
NULL;
END;
/


-- This example throws an exception. %TYPE is applied
-- directly to the object type.


DECLARE
v_price discount_price_obj.price%TYPE;
BEGIN
NULL;
END;
/
  
 
复合对象类型
 
复合对象类型可以以某个属性的数据类型的形式,包含另一个对象类型。
 
CREATE OR REPLACE TYPE discount_price_obj AS OBJECT (
discount_rate NUMBER(10,4),
price NUMBER(10,2),

MEMBER FUNCTION discount_price RETURN NUMBER)
INSTANTIABLE
FINAL;
/


CREATE OR REPLACE TYPE inventory_obj AS OBJECT (
item_id NUMBER(10),
num_in_stock NUMBER(10),
reorder_status VARCHAR2(20),
price REF discount_price_obj);
/
  
 
2)方法
方法就是�


相关文档:

sql时间函数详解

1.      当前系统日期、时间
        select getdate()
2. dateadd      在向指定日期加上一段时间的基础上,返回新的 datetime 值
       例如:向日期加上2天
    &nbs ......

写ORACLE SQL

一.按英文字母排序:
        select * from table order by nlssort(name,'NLS_SORT=schinese_pinyin_M');
 二. 写一个SQL语句,查询选修了5门课程的学生学号和姓名(9分钟)
答:SQL语句如下:
select stu.sno, stu.sname
from student stu
where (select count(*) from s ......

sql游标

因为要根据很复杂的规则处理用户数据,所以这里用到数据库的游标。平时不怎么用这个,写在这里纯粹为自己备个忘。
--将学籍号重复的放入临时表 tmp_zdsoft_unitive_code(除高中学段外)
drop table tmp_zdsoft_unitive_code;
select s.id ,sch.school_code,sch.school_name,s.student_name,s.unitive_code,s.identity_car ......

[转]SQL行列互换

问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果): 
姓名 语文 数学 物理 
---- ---- --- ......

(转)SQL经典面试题集(一)


第一题:
为管理业务培训信息,建立3个表:
S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄
C(C#,CN)C#,CN分别代表课程编号,课程名称
SC(S#,C#,G) S#,C#,G分别代表学号,所选的课程编号,学习成绩
(1)使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名?
(2) ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号