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分了 不好意思

到底插入表时有哪些需要注意的?
...全文
149 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,382

社区成员

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

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