Toh*_*mas 7 sql oracle plsql oracle11g
我一直试图找到问题所在,但我只是运气不好,根本不理解这个问题.我有以下代码:
CREATE OR REPLACE FUNCTION ckeckDay(dateC in date)
RETURN VARCHAR
IS
day VARCHAR(15);
checkFriday VARCHAR(1);
BEGIN
checkFriday := 'N';
day := to_char(dateC, 'DAY');
IF day = 'FRIDAY' THEN
checkFriday := 'Y';
END IF;
RETURN day;
END;
/
Run Code Online (Sandbox Code Playgroud)
将dateC被设置为周五(甚至通过返回测试它day的替代day变量,它返回周五).然而,IF声明从不计算真实的,即使day变量确实Friday.Any想法如何去解决这个issue.Thanks
Dav*_*dge 10
如果你想对此非常强大,那么你应该将NLS设置强制为英语并应用"填充模式"格式模型FM来修剪前导和尾随空格.
If To_Char(DateC,'fmDAY', 'nls_date_language=english') = 'FRIDAY'
Then ...
Run Code Online (Sandbox Code Playgroud)
这是因为day变量包含一个空白填充值。使用trim函数去除前导和尾随空格:
IF trim(day) = 'FRIDAY' THEN
checkFriday := 'Y';
END IF;
Run Code Online (Sandbox Code Playgroud)
并且请VARCHAR2对字符串变量使用数据类型。不要使用VARCHAR.
| 归档时间: |
|
| 查看次数: |
595 次 |
| 最近记录: |