问题是不能将绑定变量用于表名,而Oracle文档则是数据库只使用绑定变量的值,不以任何方式解释其内容。
另外,请注意,如果不是双引号,对象名总是大写的,因此必须查找t_name||'_OLD',而不是t_name||'_old'。
1、Arcgis无法连接数据库/数据库连接或创建失败解决方法最近好多同事在使用arcgis过程中出现无法连接数据库或者是无法创建数据库。连接到数据库失败;无法创建新的数据库,权限被拒绝(如下图)。
出现这个原因是你所用的电脑系统文件dao360.dll损坏或缺失。
解决办法:首先检查一下电脑系统文件夹,文件夹位置:C:\Program Files (x86)\Common Files\Microsoft Shared\dao,如果没有DAO文件夹或有DAO文件夹却没有dao360.dll则下载一个dao360.dll文件或者从其他电脑复制一个到相应的路径下即可解决(没有DAO文件夹的先自己新建一个文件夹命名为DAO)。
2、点击add data,不显示链接过的文件夹,显示空白
1)删除地图模板,默认模板
Win7路径:C:\Users\【当前登录用户名】\AppData\Roaming\ESRI\Desktop10.X\ArcMap\Templates\Normal.mxt
Win10路径:C:\Users\【当前登录用户名】\Desktop10.X\AppData\Roaming\ESRI\ArcMap\Templates\Normal.mxt
2)点击运行,输入regedit,选择HKEY_CURRENT_USER\Software\ESRI,重命名ESRI为ESRI_1
3、栅格计算器里表达式输入框不见/找不到
解决方法:按住Ctrl+鼠标滚轮
4、shapefile数据属性表乱码或导出后在excel打开乱码
一般遇到这种问题有两个原因,其一是excel显示语言设置有问题,其二就是arcgis软件的问题。
1)excel显示语言设置
打开Excel——【文件】——【选项】——【语言】,看看编辑语言。
选择中文,点击“设为默认值”,设定完成后重启一下Excel
2)arcgis相关设置
原因:Shp文件的头文件中,一般会包含shp文件使用的编码类型信息,这个信息称为LDID(Language Driver ID),这样在使用应用程序打开shp的时候,应用程序就会自动判别用何种编码类型去正确读取它,而不会发生乱码。利用ArcGIS Desktop生产的shp数据中通常会包含这项信息。在Shp文件的子文件中,有时我们还会发现同名的*.cpg文件,cpg文件中也存储了编码信息,用记事本打开,可以看到(例如utf-8)。
以上二者被ArcGIS识别的优先顺序是,LDID优先于CPG文件。也就是如果头文件中没有约定读shapefile的编码类型时,如果这时刚好有个CPG文件,那么ArcGIS就会使用这里的编码类型读取。
但shapefile 是个开放格式,只要你了解了数据规范,完全可以脱离ArcGIS自己生产出来。在Windows中文语言设置下,假设你自己写代码或者使用第三方的程序生产了shapefile,例如MapGIS,默认使用CP936(GBK)编码存储,但是无论粗心大意还是有意为之没有在数据头文件中约定“我用了936!”。如果是ArcGIS 10.2和之前的版本,那么没问题,ArcGIS默认就是以这种方式识别,没有乱码。可是拿到ArcGIS 10.2.1,ArcGIS 10.2.2,ArcGIS 10.3.x 这几个版本中发现乱码了!因为在缺失LDID和CPG时,这几个版本默认使用UTF-8来读取shapefile,这样必然乱码了。
1. 对于抛错ORA-00942,表或视图不存在或者找不到数据连接:***ull1.1 解决方案
要先确认数据库里表或字段是否存在,或者是否拼写正确。
当初创建时是以什么用户创建的,现在的连接用户是否有权限查询该表。用建表的用户连接后再查询看看。
2. 对于抛错ORA-00904,标识符无效
2.1 解决方案
需要确定数据库里对应字段类型是否匹配。
字段、表达式的别名在where子句和group by子句都是不能使用的。
3. 对于抛错ORA-01008: 并非所有变量都已绑定
需要结合看一下具体的存储过程是怎么写的,然后在6.5中调用看看。
3.1 解决方案
6.1升级到6.5,存储过程写法需要变一下,原写法如:call username.procname(?,'[?para|?]','[?para|?]','[?para|?]')需要改为6.5里的写法:{call username.procname(?,'[?p_year|?]','[?p_season|?]','[?p_unit|?]')}即可。
改成这种写法后,如果仍然不成功,报ORA-06550的错误。
原因是:ORACLE里面的存储过程,识别包体名,而不是用户名。直接拖得话,默认是用户名,要自己写包名才行。
4. 对于抛错ORA—00936:missing expression
4.1 解决方案
sql里的参数写法问题,and ([?pro_status|?])和前面的参数识别冲突,去掉and ([?pro_status|?])即可。
5. 对于抛错ORA-01401: 插入的值对于列过大
5.1 原因
数据库的字段nvarchar2(2000),只能存储1000的汉字,当插入2000的汉字的时候就会报错。
5.2 解决方案
把nvarchar2(2000)改成nvarchar2(4000)就可以存下你的2000个汉字了。但是有一点,nvarchar2最大也只能够放到4000宽度了。如果还需要存更多的汉字,字段类型就得用Clob类型了。
6. 对于报错ORA-01830: 日期格式图片在转换整个输入字符串之前结束
6.1 原因
在对字符串型数据转化成日期型数据时,字符串的长度大于格式化的长度,如test数据库中的一个数据列notice_date存的数据为:2011/08/12 08:49:23,将其转化为yyyy-mm-dd格式的数据时,如sql语句为:select todate(notice_date,'yyyy-mm-dd') from test就会报错。
6.2 解决方案
使用substr函数将字符串的位数截取的和转换的日期函数相同,如上面的sql语句就改为:select todate(substr(notice_date,1,10,'yyyy-mm-dd') )from test即可。
7. 对于报错:The Network Adapter could not establish the connection
7.1 解决方案
数据库里系统日志满了,删除后重新启动OracleOraDb10g_home1TNSListener服务后就ull能连接成功了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)