SQL 命令未正确结束
当点击下面的这一行时,我发现 sql 命令没有正确结束。我想将表 B 中的数据插入到表 A 中。它们都有相同的列,但顺序可能不同。蒂亚!
Insert into a (select column_name from user_tab_columns where table_name = 'B')
select * from b
我正在使用 pl/sql 开发人员。
I am getting the sql command not properly ended when hiting this line below. I want to insert into table A with data from table B. Both of them have the same columns but the sequence might be different. TIA!
Insert into a (select column_name from user_tab_columns where table_name = 'B')
select * from b
I am using pl/sql developer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 plsql 过程中使用动态 SQL。在游标 for 循环中循环遍历列名称并将它们添加到字符串中。然后执行查询。请参阅下面的代码(未测试)
Use dynamic SQL in a plsql procedure. Loop through the column names in a cursor for loop and add them to a string. Then execute the query. See code below (not tested)
在类似的情况下,我在目标表上创建了一个视图,其中的列按适当的顺序排列。
例如,
您创建一个像这样的视图
,然后您可以执行
insert into a_v select * from b;
优点是,即使将列添加到表 a 而不是添加到表 b,只要它们可以为空或有默认值,通过视图插入仍然有效。
我自动创建了 CREATE VIEW 脚本,并在 USER_TAB_COLUMNS 中查找表 B。
In a similar situation I created a view over the destination table that had the columns in the appropriate order.
For example
You create a view like
Then you can do an
insert into a_v select * from b;
The advantage is that, even if columns are added to table a but not to table b then, as long as they are nullable or have a default, the insert via the view still works.
I created the CREATE VIEW scripts automatically, looking up against USER_TAB_COLUMNS for table B.
这也许可以做你想做的事。
This maybe do what you want.