12.04.06
关键字作列名的问题
今天开发的兄弟找我,说是一个更新语句,在9i上面没有问题,在8i中碰到问题了,执行不过去.
俺过去学习了下(俺对开发一向很差劲).
问题大概如此:一个update语句,要向一个表中插入一个数据,该表中有一个字段名字为sql(汗一个先,历史遗留的超强字段),由于这个字段为long型,要增加的内容就是一个select语句到里面,长度大概6k,所以不能直接用insert into的方法来作,因为这样,会报字符串超长的错误.也就是ora-01704错误.解决ora-01704错误的方法,就是先申明一个变量,然后把那个超级长的字符先赋值给变量,然后更新的时候,用这个变量来更新就好了.这么作,就必须使用匿名块,在8i中,匿名块中,是不认识直接的关键字作列名的,会报错.大概是pls-00103错误.
也就是说,为了能插入数据,我必须使用变量,也就是说必须使用匿名块,可是用了匿名块,就不认识关键字作列名了.
俺记得直接加引号就可以解决的,俺加,先加双引号,报错,说没有这个列,nnd,再加单引号,还是报错.郁闷呀,郁闷呀,metalink,asktom一起上,终于发现一个不大注意的问题,原来使用了双引号来转换那个关键字的列名后,双引号中是区分大小写的,而oracle一向不怎么区分这玩意的.原来我一直作的”sql”这样的是不行的,修改成”SQL”,问题就解决了.
看来以后要多关注开发的东西.