接收字符返回字符或数值时可以使用dual伪表
①.、把小写字符转换成大写
select supper("smi") form dual
lower("SMI")
initcap("smi")
concat("hello""world") 结果为helloworld
length("hello")
replace("hello","l","x") 结果为hexxo
①.、四舍五入函数ROUND()
默认取整,可以指定保留位数
默认全部去掉小数,可以指定位数
oracle中提供了很多和日期相关的函数,包括日期的加减
日期 - 数字 =日期
日期 - 日期 = 数字(天)
①.、如:查询员工进入公司的走数
注:当前日期查询select sysdate form dual
获取两个时间段的月数使用months_between(sysdate,入职日期)
如:获取员工三个月后的日期
指定给出下次某日期数next_date()
next_date(sysdate,"星期一")
求出本月的最后一天
last_day(sysdate)
①.、to_char字符串转换函数
如:将所有员工的入职日期的年、月分开
注:在划分时需要通配符
年:yyyy? 月:mm? 日:dd
时:HH 分:mi? 秒:ss
定义时间格式
在10以下的月数前面会默认加上前导零,去除加上fm
to_char还可以给数字做格式化
如将员工的工资按三位","分隔
如果想在钱上加上国家符号
美元使用
中文使用l
to_number("10") +to_number("10")
①.、空值处理 nvl
如果在查询的时候存在空值的情况可以使用
nvl(comm,0) 当comm的列值为空时,用0代替
该函数类似于if ...else if ...else
decode(中国,中国,我是中国,美国,我是美国,其他)
如果为中国返回我是中国,为美国返回我是美国,为其他字符则返回其他.
语法 case when city=中国 then 我是中国
? ? ? ? ? ? when city=美国 then 我是美国
? ? ? ? ? ? ? else 其他
可以用如下语句查看用户自定义的资源,如函数、存储过程:
SELECT?*?FROM?USER_PROCEDURES;
查到概况后根据对象名字可以查看其源码:
SELECT?*?FROM?USER_SOURCE?WHERE?NAME?=?'COMPUTERFEE';
在user_objects里面,里面还存储了其他对象,通过object_type区分.
select object_name from user_objects
where object_type='FUNCTION';
这样就能看到函数名称了.
当然,跟别的一样,也有对应的all_objects,dba_objects.
查看包中函数、过程的SQL语句:
SELECT owner,name,text,line FROM DBA_SOURCE where type = 'PACKAGE' and (TEXT like ' procedure%' or TEXT like ' function%');
结果中,owenr:哪个用户的,name:哪个包,text:函数名及部分参数,line:行位置
查看函数、过程的SQL语句:
SELECT OWNER,NAME,TYPE,TEXT,line FROM DBA_SOURCE WHERE LINE=1 AND TYPE IN ('FUNCTION','PROCEDURE');
如果要看完整的参数定义,按owner,name,type,text定位,一般前几行就是参数定义.
以上语句测试过,应该能满足你的要求.
别忘了给"最佳答案"就行(呵呵)
查找位置的函数为instr函数.下标以1开始,如果不存在则返回0.
举例如下:
①.、创建测试表,
insert into test_instr values ('abc');
insert into test_instr values ('cdaf');
insert into test_instr values ('bbed');
select t.*, instr(str,'a') location from test_instr t,可以发现,最后一条记录,不存在该字符的话,则返回0.
工具sqlplus或者plsqldeveloper
方法一:sqlplus
①登录用户后,执行下面语句查看当前用户有哪些存储过程:
select ?name from user_source where ?type='PROCEDURE';
或者:
select object_name from user_procedures;
select object_name from user_objects where object_type='PROCEDURE' ;
②找到你所要查询的存储过程名字后,执行下面操作,可以看到存错过程内容:
select ?text from user_source where name ='xxxx';--(xxxx代表所要查询的存储过程名字)
------------------------------------------------
如果是函数,类似的方法,只需要把PROCEDURE,换成FUNCTION即可
-----------------------------------------------
方法二:pl/sql developer
打开该工具后,在最左侧可以看到如下截图,选择 My objects
然后选择functions或者Procedures,找到想要查看的对象后,选中,鼠标右键,弹出一个选项页,这里主要的几个做一下介绍:
drop:删除该存储过程
test:执行该存储过程