暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle pls-00222: 此作用域中不存在带有 “to_date” 的函数

askTom 2017-04-06
1172

问题描述

我已经在Cobol中作为嵌入式SQL编写了下面的查询。procobol编译器给予错误-
pls-00222: 此作用域中不存在带有 “to_date” 的函数

但是查询在oracle SQL developer中工作正常

注意: to_date是PAY_SUM表的一列。这是问题吗?如果是,那么解决方案是什么?

从付款中选择 *
其中ctrb_no = 94272317
和to_date(to_date,'YYYYMMDD')-add_months(to_date(from_date,'YYYYMMDD')),trunc (months_afen (to_date,'YYYYMMDD')),to_date(from_date,'YYYYMMDD') = 30




专家解答

我不熟悉Pro Cobol,但是有一个名为 “to_date” 的列似乎是一个可能的原因。指出了一些强烈建议的更改:

-将日期存储为日期,而不是字符串!那你就不用给他们约会了...
-不要对数据库对象名称使用保留字。将其重命名为其他名称。

假设您无法立即解决这些问题中的任何一个,则可以通过完全限定对 “to_date” 的引用来解决此问题。

这个函数是在standard中定义的,所以在函数调用之前放置 “sys.standard”,在列名之前放置表别名:

create table t (
  to_date varchar2(10)
);

insert into t values ('20170101');

select * from t
where  sys.standard.to_date(t.to_date, 'YYYYMMDD') = trunc(sysdate, 'y');

TO_DATE   
20170101 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论