sql拼接的简单问题……

xiedi1209 2012-12-04 03:19:15
我拼了一段sql

insertsql := 'insert into IF_ENERGY_HIS_SUB
values
(' || COL_ENERGY_HIS_SUB.ENERGY_HIS_SUB_ID || ',' ||
COL_ENERGY_HIS_SUB.orgid || ',' ||
COL_ENERGY_HIS_SUB.equip_id || ',' ||
COL_ENERGY_HIS_SUB.energy_type_id || ',' ||
COL_ENERGY_HIS_SUB.ym || ',' ||
COL_ENERGY_HIS_SUB.consume_sub || ',' ||
COL_ENERGY_HIS_SUB.output || ',' ||
COL_ENERGY_HIS_SUB.process_equip || ',' ||
COL_ENERGY_HIS_SUB.ym || ');';


然后执行

EXECUTE IMMEDIATE insertsql;
v_record_number:=SQL%ROWCOUNT;
dbms_output.put_line(v_record_number) ; --输出正确结果
commit; --提交结果
EXCEPTION WHEN OTHERS THEN
dbms_output.put_line(' 错误原因:【 '||SQLERRM||' 】'|| insertsql) ; --输出错误处理
begin
commit;
end;

意在如果成功的话,打印出执行成功的记录,不成功的话,打出错误原因,不过确实是错的,执行如下:

错误原因:【 ORA-00972: identifier is too long 】insert into IF_ENERGY_HIS_SUB
values
(B1303C70C98647799B04CF7AC7EB3C2D,11,3165B160B23E46BEA46F94BC12470FF5,33B3E09D4F3A4CDFA0750639B9E1FFB3,01-FEB-11,.08,,0,01-FEB-11);



请问是不是我的串拼的不对阿,应该择优写呢
...全文
275 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqslideng 2012-12-06
  • 打赏
  • 举报
回复
insertsql := 'insert into IF_ENERGY_HIS_SUB values (''' || COL_ENERGY_HIS_SUB.ENERGY_HIS_SUB_ID || ''',' || 后面是字符串类型的如法炮制。 对头,你可以首先把该SQL打印出来,看是否拼接正确。
禅院小沙弥 2012-12-04
  • 打赏
  • 举报
回复
COL_ENERGY_HIS_SUB这个不带行不,你都超过30个字符的标示了
xiedi1209 2012-12-04
  • 打赏
  • 举报
回复
引用 3 楼 mengwl1009 的回复:
【 ORA-00972: identifier is too long 】
long的原因就是串拼的不对因此太长,但是又不知道怎么拼
ora-0600 2012-12-04
  • 打赏
  • 举报
回复
【 ORA-00972: identifier is too long
xiedi1209 2012-12-04
  • 打赏
  • 举报
回复
引用 1 楼 ssqtjffcu1 的回复:
是的,没有拼单引号,字符串类型时需要加单引号,但在字符串中,两个单引号代表sql语句中的一个单引号。
那就是我所有的变量前后,要再加两个引号,一共前后要各有3个引号?
ssqtjffcu 2012-12-04
  • 打赏
  • 举报
回复
是的,没有拼单引号,字符串类型时需要加单引号,但在字符串中,两个单引号代表sql语句中的一个单引号。
ssqtjffcu 2012-12-04
  • 打赏
  • 举报
回复
你上面的语句而且没有使用绑定变量,多次执行的话效率会低的,应改成使用绑定变量
ssqtjffcu 2012-12-04
  • 打赏
  • 举报
回复
你可以先把你的insertsql打印出来,就可以看到你的那语句是有问题的
ssqtjffcu 2012-12-04
  • 打赏
  • 举报
回复
引用 1 楼 ssqtjffcu1 的回复:
是的,没有拼单引号,字符串类型时需要加单引号,但在字符串中,两个单引号代表sql语句中的一个单引号。
是的,字符类型字段就需要,其它数字型的那些不用

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧