4、程序员定义的子类型。
分为两种: 有约束的和没有约束的。
有约束的子类型:这种类型对原数据类型的取值做了限制或约束。
如:subtype positive is binary_integer range 1 .. 2147483647 ,--- 一个Positive类型的变量只能保存大于0 的整数。
没有约束的子类型:float 就是number的没有约束的子类型,相当于原类型起了个别名。
如:subtype FLOAT IS NUMBER;
注意:锚定的子类型不会把not null约束带给它定义的变量。
5、数据类型转换。
1)、隐式类型转换:只要使用格式正确的直接量就可以进行隐式类型转换。
如:declare
a_number number;
begin
a_number :='123';
End;
不足之处:会失去代码的清晰和安全程度。尽量避免使用隐式类型转换,有需要的尽量使用类型转换函数来进行正确的类型转换。
2)、显式类型转换:使用内置的转换函数进行类型转换。
Cast函数,和SQL server中一样,很强大的转换函数,To_Date 把一个字符串转换为日期,To_Number 把一个字符串转换为数字。
常用的显示转换函数:
a、chartorowid函数:把一个char或者varchar2类型的字符串转化为一个rowid类型的值,
规范:funtion chartorowid(string_in in CHAR) return RowId
funtion chartorowid(string_in in VARCHAR2) return RowId
b、Cast函数:常用的很灵活的转换函数, cast(hire_date as varchar2(30)).
注意:cast函数不能转换Long、long raw或者任何LOB数据类型,如果要把一个有名字的集合类型转换为另外一个有名字的集合类型,集合中的每个元素的都必须是相同类型的元素,如果URowId包含一个索引组织表的RowId值,就不能把URowId转换为RowId了。
3)、Convert函数:可以把字符串从一个字符集转换为另一个字符集,
function convert(string_in in varchar2 , new_char_set varchar2),有点替换的意思。
4)、Hextoraw函数:把一个十六进制的字符串从Char或varchar2类型转换为Raw类型。function HexToRaw(string_in in char) return raw;
5)、RawToHex函数:把Raw类型转换为Varchar2类型。
6)、RowIdToChar函数:把RowId类型的二进制转换为varchar2类型的字符串,function RawToHex (row_in in rowId) return varchar2;
浙公网安备 33010602011771号