ORACLE中插入表格的问题?

dihai2000 2003-01-10 08:56:01
假设有三个表 A,B,C
我想把B表和C表中的部分内容复制到A表中
用 SELECT B.a,B.b INTO A FROM B,C WHERE 条件 此时我没创建表A
但却老说错误是怎么回事 提示说ORA-00905:missing keyword 是不是不能加上C表啊
我用 SELECT * INTO A FROM B,C WHERE 条件 也出错误
是不是此时 A 表必须存在 可以用它在运行时创建新表然后拷贝内容进去吗?

我换用 INSERT INTO A SELECT B.a,B.b FROM B,C WHERE 条件
也出错 此时我已创建了这个表A
我都不知道是怎么回事了 诸位请指教
因为实在是没分了 只剩这么50分了 不好意思

到底插入表时有哪些需要注意的?
...全文
144 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-01-10
  • 打赏
  • 举报
回复
INSERT INTO A(colname1,colname2) (SELECT B.a,B.b FROM B,C WHERE 条件)

在后加一个括号看怎样?

sSQL=sSQL & "(ITRN_HIS.QTY)*(LIST.MULTIPLIER) " 给它一个别名
dihai2000 2003-01-10
  • 打赏
  • 举报
回复
是 我也知道可以这样子插入 因为我已经试过这样子操作别的表了
可就是这个不行 出鬼了 我都整疯了 他还是说ORA-00917: missing comma
bzszp 2003-01-10
  • 打赏
  • 举报
回复
to beckhambobo:
oracle可以这样insert
SQL> select * from d;

PERSON_ID SUPERVISOR
---------- ----------
aa bb
bb cc
cc dd
ee ff

SQL> insert into d select * from d where rownum<2;

已创建 1 行。

SQL> select * from d;

PERSON_ID SUPERVISOR
---------- ----------
aa bb
bb cc
cc dd
ee ff
aa bb

beckhambobo 2003-01-10
  • 打赏
  • 举报
回复
sorry,细心发现代码中出现一个极大的错误,insert等语句不能用记录集操作,以下给你参考:

strsql="insert into newsindex (ntname,content,statsno,specno) values('"&v_ntname&"','"&v_content&"','"&v_statsno&"','"&v_specno&"')"
set cm1 = Server.CreateObject("ADODB.Command")
cm1.ActiveConnection = MM_conn_STRING
cm1.CommandText = strsql
cm1.CommandType = 1
cm1.CommandTimeout = 0
cm1.Prepared = true
cm1.Execute()
...........
dihai2000 2003-01-10
  • 打赏
  • 举报
回复
不好意思 里面有几个 AS 也是不小心打上的
我在 SQL/PLUS中 就是 ORA-00917: missing comma
这个错误
bzszp 2003-01-10
  • 打赏
  • 举报
回复
最后一句后面加上“;”试试
sSQL=sSQL & "WHERE ITRN_HIS.ITEM='" & Item_code & "' ;"
beckhambobo 2003-01-10
  • 打赏
  • 举报
回复
比较难找出错误,试在sql*puls测试,看它错误停留在那里,这样比较方便!

我也用这种方法.
dihai2000 2003-01-10
  • 打赏
  • 举报
回复
哦 不好意思 是我多拷贝进来的 这一句在ASP中应该是注释起来的
是不是除了这句外 应该没什么错误了把?
很谢谢你能看长长的代码.
bzszp 2003-01-10
  • 打赏
  • 举报
回复
去掉这一句
'sSQL=sSQL & "INTO tmpIV002_I "
dihai2000 2003-01-10
  • 打赏
  • 举报
回复
因为业务的复杂 所以会很长 但愿不会看晕 多谢大侠
sSQL="INSERT INTO tmpIV002_I ("

sSQL=sSQL & "SOURCE, "
sSQL=sSQL & "CCN, "
sSQL=sSQL & "MAS_LOC, "
sSQL=sSQL & "ITEM, "
sSQL=sSQL & "REVISION, "
sSQL=sSQL & "ITRN_HIS_DATE, "
sSQL=sSQL & "ITRN_HIS_TERMINAL, "
sSQL=sSQL & "ITRN_HIS_TIME, "
sSQL=sSQL & "ITRN_HIS_SEQ, "
sSQL=sSQL & "REF, "
sSQL=sSQL & "REF_LINE, "
sSQL=sSQL & "CONSUMABLE, "
sSQL=sSQL & "AGC, "
sSQL=sSQL & "GL_ACCT, "
sSQL=sSQL & "LOCATION, "
sSQL=sSQL & "BIN, "
sSQL=sSQL & "PUR_CCN, "
sSQL=sSQL & "RECEIVER, "
sSQL=sSQL & "REC_LINE, "
sSQL=sSQL & "VENDOR, "
sSQL=sSQL & "PUR_LOC, "
sSQL=sSQL & "BUY_SELL_COST, "
sSQL=sSQL & "QTY, "
sSQL=sSQL & "USR_, "
sSQL=sSQL & "POSTING_DATE, "
sSQL=sSQL & "TRAN_COST, "
sSQL=sSQL & "INSP_STAT, "
sSQL=sSQL & "MRB_DISP, "
sSQL=sSQL & "FROM_TO_CCN, "
sSQL=sSQL & "FROM_TO_MAS_LOC, "
sSQL=sSQL & "REASON, "
sSQL=sSQL & "PROCESS_ID, "
sSQL=sSQL & "Quantity "
sSQL=sSQL & ") "

sSQL=sSQL & "SELECT ITRN_HIS.SOURCE || '-' || ITRN_HIS.SOURCE_QUAL, "
sSQL=sSQL & "ITRN_HIS.CCN, "
sSQL=sSQL & "ITRN_HIS.MAS_LOC, "
sSQL=sSQL & "ITRN_HIS.ITEM AS, "
sSQL=sSQL & "ITRN_HIS.REVISION, "
sSQL=sSQL & "ITRN_HIS.ITRN_HIS_DATE, "
sSQL=sSQL & "ITRN_HIS.ITRN_HIS_TERMINAL, "
sSQL=sSQL & "to_char(to_date(ITRN_HIS.ITRN_HIS_TIME,'hh24:mi:ss'),'hh24:mi:ss'), "
sSQL=sSQL & "ITRN_HIS.ITRN_HIS_SEQ, "
sSQL=sSQL & "LTrim(ITRN_HIS.REF), "
sSQL=sSQL & "LTrim(ITRN_HIS.REF_LINE), "
sSQL=sSQL & "ITRN_HIS.CONSUMABLE, "
sSQL=sSQL & "ITRN_HIS.AGC AS, "
sSQL=sSQL & "ITRN_HIS.GL_ACCT, "
sSQL=sSQL & "ITRN_HIS.LOCATION, "
sSQL=sSQL & "ITRN_HIS.BIN AS, "
sSQL=sSQL & "ITRN_HIS.PUR_CCN, "
sSQL=sSQL & "ITRN_HIS.RECEIVER, "
sSQL=sSQL & "ITRN_HIS.REC_LINE, "
sSQL=sSQL & "ITRN_HIS.VENDOR, "
sSQL=sSQL & "ITRN_HIS.PUR_LOC, "
sSQL=sSQL & "ITRN_HIS.BUY_SELL_COST, "
sSQL=sSQL & "ITRN_HIS.QTY, "
sSQL=sSQL & "ITRN_HIS.USR_, "
sSQL=sSQL & "ITRN_HIS.POSTING_DATE, "
sSQL=sSQL & "ITRN_HIS.TRAN_COST, "
sSQL=sSQL & "ITRN_HIS.INSP_STAT, "
sSQL=sSQL & "ITRN_HIS.MRB_DISP, "
sSQL=sSQL & "ITRN_HIS.FROM_TO_CCN, "
sSQL=sSQL & "ITRN_HIS.FROM_TO_MAS_LOC, "
sSQL=sSQL & "ITRN_HIS.REASON, "
sSQL=sSQL & "ITRN_HIS.PROCESS_ID, "
sSQL=sSQL & "(ITRN_HIS.QTY)*(LIST.MULTIPLIER) "
'sSQL=sSQL & "INTO tmpIV002_I "
sSQL=sSQL & "FROM "
sSQL=sSQL & "ITRN_HIS, "
sSQL=sSQL & "LIST "
sSQL=sSQL & "WHERE ITRN_HIS.ITEM='" & Item_code & "' "
beckhambobo 2003-01-10
  • 打赏
  • 举报
回复
A表是否有唯一字段,SELECT B.a,B.b FROM B,C WHERE 条件 是否有记录?

bzszp 2003-01-10
  • 打赏
  • 举报
回复
把你的操作代码全部贴出来
dihai2000 2003-01-10
  • 打赏
  • 举报
回复
to bzszp
我是用的你那种办法
INSERT INTO A(colname1,colname2) SELECT B.a,B.b FROM B,C WHERE 条件
并且字段数目是一样的 我都看了好多遍了 但是插入时还是提示ORA-00917: missing comma
我都整了好久了 还是找不到那里错误 逗号我也看了好多遍了 也没少啊
bzszp 2003-01-10
  • 打赏
  • 举报
回复
INSERT INTO A SELECT B.a,B.b FROM B,C WHERE 条件
这个可能是由于字段数目不对,这样
INSERT INTO A(colname1,colname2) SELECT B.a,B.b FROM B,C WHERE 条件
dihai2000 2003-01-10
  • 打赏
  • 举报
回复
TO bzszp
很谢谢你 但我想用 INSERT 语句 因为我是在 ASP中调用 所以不能每次执行时建新表
bzszp 2003-01-10
  • 打赏
  • 举报
回复
create table a as select b.a,b.b from b,c where ...;

17,377

社区成员

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

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