诡异问题!

yf520gn 2008-10-23 06:03:50
INSERT INTO TB_NEW_ICTYPE_DO_MAIN (DOTYPE,DOTYPENAME,IC_TYPE,HANDLE,DEPT,AREA,TIME_STATE) VALUES ('INTEGRALTREE','积分政策','IC02','EMP999','DEPT9999','AREA00003','Q2') chr(13); SELECT S_TB_NEW_ICTYPE_DO_MAIN.CURRVAL AS new_id FROM TB_NEW_ICTYPE_DO_MAIN ;
这条语句这样子执行不了~~然后非要在分号那里换一下行才可以,
INSERT INTO TB_NEW_ICTYPE_DO_MAIN
(DOTYPE, DOTYPENAME, IC_TYPE, HANDLE, DEPT, AREA, TIME_STATE)
VALUES
('INTEGRALTREE',
'积分政策',
'IC02',
'EMP999',
'DEPT9999',
'AREA00003',
'Q2') chr
(13);
SELECT S_TB_NEW_ICTYPE_DO_MAIN.CURRVAL AS new_id
FROM TB_NEW_ICTYPE_DO_MAIN;
请问这是为什么?该如何解决?
我是在一段程序中将这条语句做为一个字符串存放的~请各位高手解答一下
...全文
141 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
codearts 2008-10-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yf520gn 的回复:]
2楼,这本来是个很简单的2条语句,不想搞得那么复杂,没有别得办法了吗?
其实就是A;B不能执行,
A;
B
就可以执行了.这是为什么?我想中间加个换行符因该会好,可是该怎么加?

[/Quote]

这是工具的问题吧?假如你用pl/sql developer来运行:
sql A;sql B;
会出错。
但是你把这个语句放到procedure里面,就OK
oracledbalgtu 2008-10-24
  • 打赏
  • 举报
回复
解决办法就是在你的程序拼接字符串的时候,每个语句结束的时候,加个换行符号,让字符串输出到oracle之前有换行。

[Quote=引用楼主 yf520gn 的帖子:]
INSERT INTO TB_NEW_ICTYPE_DO_MAIN (DOTYPE,DOTYPENAME,IC_TYPE,HANDLE,DEPT,AREA,TIME_STATE) VALUES ('INTEGRALTREE','积分政策','IC02','EMP999','DEPT9999','AREA00003','Q2') chr(13); SELECT S_TB_NEW_ICTYPE_DO_MAIN.CURRVAL AS new_id FROM TB_NEW_ICTYPE_DO_MAIN ;
这条语句这样子执行不了~~然后非要在分号那里换一下行才可以,
INSERT INTO TB_NEW_ICTYPE_DO_MAIN
(DOTYPE, DOTYPENAME, IC_TYPE, HANDLE, DE…
[/Quote]
Andy__Huang 2008-10-24
  • 打赏
  • 举报
回复
奇怪?这样的代码我没有遇到过?

不知道楼主是用什么开发工具写这个sql 代码的?
breezily 2008-10-23
  • 打赏
  • 举报
回复
是不是与Commit有关呀,
有时这样会造成死锁呢;
jdsnhan 2008-10-23
  • 打赏
  • 举报
回复
挺有意思。
sky_810613 2008-10-23
  • 打赏
  • 举报
回复
如果是在程序中拼的两个SQL语句保存在一个String串中,想让它一起执行的话就放在 begin end 中,如下:
begin 语句A; 语句B ; end;
然后传到数据库端去执行即可
sky_810613 2008-10-23
  • 打赏
  • 举报
回复
如果是在程序中拼的两个SQL语句保存在一个String串中,想让它一起执行的话就放在 begin end 中,如下:
begin 语句A; 语句B ; end;
然后传到数据库端去执行即可
范佩西_11 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yf520gn 的回复:]
引用 4 楼 linzhangs 的回复:
晕,这就是SQL规定的啊。就是基本语法,编译器通过这个来解析你写的程序的。你想加什么换行符啊?要做成什么效果?

我想这样:语句A+换行符+语句B,告诉编译器我换行了~~
要做成2条SQL语句A;B这样连在一起可以执行~
[/Quote]
呵呵。这个问题没什么好探讨的,就是规则。比如这是个法制社会,你想修改法律,那你必须是全国人民代表大会。
sleepzzzzz 2008-10-23
  • 打赏
  • 举报
回复
你使用的是什么工具,应该是工具编译的问题.
BlueskyWide 2008-10-23
  • 打赏
  • 举报
回复
对不起,键盘不好使。

假如我俩比赛水中憋气,我50秒便浮出水面,你偏偏2分钟才浮出,我一气之下,不和你玩了。
我想,这该不是Oracle不带你玩,可能是应用程序编译器的Bug。
BlueskyWide 2008-10-23
  • 打赏
  • 举报
回复
假如我俩比赛水中憋气,我50秒便浮出水面,你偏偏2分钟才浮出,我一气之下,不和你玩了
yf520gn 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 linzhangs 的回复:]
晕,这就是SQL规定的啊。就是基本语法,编译器通过这个来解析你写的程序的。你想加什么换行符啊?要做成什么效果?
[/Quote]
我想这样:语句A+换行符+语句B,告诉编译器我换行了~~
要做成2条SQL语句A;B这样连在一起可以执行~
vc555 2008-10-23
  • 打赏
  • 举报
回复
的确是个诡异问题
范佩西_11 2008-10-23
  • 打赏
  • 举报
回复
晕,这就是SQL规定的啊。就是基本语法,编译器通过这个来解析你写的程序的。你想加什么换行符啊?要做成什么效果?
yf520gn 2008-10-23
  • 打赏
  • 举报
回复
2楼,这本来是个很简单的2条语句,不想搞得那么复杂,没有别得办法了吗?
其实就是A;B不能执行,
A;
B
就可以执行了.这是为什么?我想中间加个换行符因该会好,可是该怎么加?
mantisXF 2008-10-23
  • 打赏
  • 举报
回复
INSERT 是一个STATEMENT, 以逗号结束。
要么写个存储过程返回游标结果集好了。
[Quote=引用楼主 yf520gn 的帖子:]
INSERT INTO TB_NEW_ICTYPE_DO_MAIN (DOTYPE,DOTYPENAME,IC_TYPE,HANDLE,DEPT,AREA,TIME_STATE) VALUES ('INTEGRALTREE','积分政策','IC02','EMP999','DEPT9999','AREA00003','Q2') chr(13); SELECT S_TB_NEW_ICTYPE_DO_MAIN.CURRVAL AS new_id FROM TB_NEW_ICTYPE_DO_MAIN ;
这条语句这样子执行不了~~然后非要在分号那里换一下行才可以,
INSERT INTO TB_NEW_ICTYPE_DO_MAIN
(DOTYPE, DOTYPENAME, IC_TYPE, HANDLE, DE…
[/Quote]
yf520gn 2008-10-23
  • 打赏
  • 举报
回复
语句详情不必细看,简单来说就是这样:语句A;语句B 无法执行
非要这样:语句A;
语句B
才能执行~

17,377

社区成员

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

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