doub number(10,2);
doub=round(datediff(day,'2006-6-17 8:00:00',to_char(c_date,'YYYY-MM-DD HH24:MI:SS')) % 4,2);我在 toad 建立个函数,里面的这条语句怎么就通不过 呢,提示“ERROR line 27, col 4, ending_line 27, ending_col 7, Found 'doub', CASE is expected”我是要把两个时间想减,然后得到 “带小数” 的天数 ,为了 计算班别用的
'2006-6-17 8:00:00' 是丙班,以此类推。。
if (doub >= 0 and doub < 0.5) then
class = '丙';
elsif (doub >= 0.5 and doub < 1) then
class = '乙';
elsif (doub >= 0.5 and doub < 1) then
class = '丁';
elsif (doub >= 0.5 and doub < 1) then
class = '丙';
elsif (doub >= 0.5 and doub < 1) then
class = '甲';
elsif (doub >= 0.5 and doub < 1) then
class = '乙';
elsif (doub >= 0.5 and doub < 1) then
class = '丁';
elsif (doub >= 0.5 and doub < 1) then
class = '甲';
end if;
return class;
=======
还有 toad 里怎么给时间变量赋值 ,我 t_date date; --丙,白班
set t_date = 2006-6-17 8:00:00;这么不行
doub=round(datediff(day,'2006-6-17 8:00:00',to_char(c_date,'YYYY-MM-DD HH24:MI:SS')) % 4,2);我在 toad 建立个函数,里面的这条语句怎么就通不过 呢,提示“ERROR line 27, col 4, ending_line 27, ending_col 7, Found 'doub', CASE is expected”我是要把两个时间想减,然后得到 “带小数” 的天数 ,为了 计算班别用的
'2006-6-17 8:00:00' 是丙班,以此类推。。
if (doub >= 0 and doub < 0.5) then
class = '丙';
elsif (doub >= 0.5 and doub < 1) then
class = '乙';
elsif (doub >= 0.5 and doub < 1) then
class = '丁';
elsif (doub >= 0.5 and doub < 1) then
class = '丙';
elsif (doub >= 0.5 and doub < 1) then
class = '甲';
elsif (doub >= 0.5 and doub < 1) then
class = '乙';
elsif (doub >= 0.5 and doub < 1) then
class = '丁';
elsif (doub >= 0.5 and doub < 1) then
class = '甲';
end if;
return class;
=======
还有 toad 里怎么给时间变量赋值 ,我 t_date date; --丙,白班
set t_date = 2006-6-17 8:00:00;这么不行
解决方案 »
- oracle 存储过程中的多表查询问题? 急 在线等
- 怎样把某个库中所有表的操作权限赋给某个用户
- oracle备份问题
- 新手问一个很基础的问题
- 如以下数据列表??谢谢
- 这个sql怎么写,在线等
- 在pl/sql 怎样知道delete * from table 删除的记录数量
- 存储过程的问题
- ORACLE CASE WHEN 关联更新问题
- 使用oracle12c创建数据库时,出现了GRANT失败,显示口令文件缺失或禁用 有大神知道么
- 对数值型字段写 insert into table1 values ('1')合法吗?
- Oracle SQL*Loader时出现同一个数据文件一些记录导入成功,一些失败
需要数据类型转换
doub=round(datediff(day,c_date)) % 4,2);
006-6-17 8:00:00' , 'yyyy-mm-dd hh24-mi-ss') rtn FROM DUAL; RTN
----------
1091.32118
下面是我完整的函数,怎么就是第 8行( doub=round((ceil(To_date(C_date ,t_date)%4),2);)
无法通过。CREATE OR REPLACE FUNCTION f_sl2_class(c_date date) return varchar2
as
class varchar2(4);
t_date date; --丙,白班
set t_date := to_date('2006-6-17 8:00:00','YYYY-MM-DD HH24:MI:SS');
doub number(100,10);
BEGIN
doub=round((ceil(To_date(C_date ,t_date)%4),2);
if (doub >= 0 and doub < 0.5) then
class = '丙';
elsif (doub >= 0.5 and doub < 1) then
class = '乙';
elsif (doub >= 0.5 and doub < 1) then
class = '丁';
elsif (doub >= 0.5 and doub < 1) then
class = '丙';
elsif (doub >= 0.5 and doub < 1) then
class = '甲';
elsif (doub >= 0.5 and doub < 1) then
class = '乙';
elsif (doub >= 0.5 and doub < 1) then
class = '丁';
elsif (doub >= 0.5 and doub < 1) then
class = '甲';
end if;
return class;
END f_sl2_class;
原来不是 =, 而是 :=这回通过了,但还想问一下 To_date(C_date ,t_date)mod 4
这个得到的是小数吗?
如果是两个小数 取模 得到的就应该是小数吧??
不是 ,这个得到的是日期啊,date类型的。
这个是 这个得到的是 天吗?是小数吗