gpt4 book ai didi

sql - Oracle中如何将select语句的结果存储到临时表中?

转载 作者:行者123 更新时间:2023-12-02 20:30:18 24 4
gpt4 key购买 nike

我们可以在 SQL Server 中编写 select column1,column2 into #temp from tableName。但是我无法在 Oracle 数据库中编写相同的查询。

我想将 select/insert/delete/update 或任何结果集的结果存储到 oracle 数据库的本地临时表中。我该怎么做?

我正在我的 Oracle sql 开发人员工具中执行以下查询:

select * into #temp 
from bmi;

但我收到如下错误,请帮助查找此错误。

当我在 Microsoft SQL Server 中执行相同的查询时,它会被执行并创建 #temp 表,它不存在于数据库中,但它可以保存该特定 session 的数据。所以我想在 ORACLE 数据库中使用相同的场景。

ORA-00911: invalid character 00911. 00000 - "invalid character" *Cause: identifiers may not start with any ASCII character other than letters and numbers. $#_ are also allowed after the first character. Identifiers enclosed by doublequotes may contain any character other than a doublequote. Alternative quotes (q'#...#') cannot use spaces, tabs, or carriage returns as delimiters. For all other contexts, consult the SQL Language Reference Manual. *Action: Error at Line: 1 Column: 15

最佳答案

I want to store the result of select/insert/delete/update or any result set into a local temporary table in oracle database,How I can Do This?

你不能。 Oracle 没有本地临时表,它不是那样工作的。但它不需要。 Oracle 具有与 SQL Server 截然不同的内部模型,这意味着在 Oracle 中不需要很多 SQL Server 实践。 (公平地说,SQL Server 具有 Oracle 没有的精巧功能,例如用于 DML 的 ANSI 92 连接。)

关键的见解是:您不想将选择/插入/删除/更新的结果或任何结果集存储到本地临时表中。这是您必须在 T-SQL 中执行的操作,以实现实现某些业务逻辑的最终目标。但是您在 SQL Server 中真正想做的以及在 Oracle 中想做的是编写一些可以为您的组织带来值(value)的代码

那么,有了这种心态,您需要做什么?

如果你想循环一个结果集,那么可能是 a Cursor Loop是你要找的吗?

for rec in ( select * from some_table
where the_date = date '2018-02-01' )
loop
...

如果您想在将某些数据插入数据之前对其进行处理,那么也许您应该使用 a PL/SQL collection :

type l_recs is table of some_table%rowtype;

但也许你只需要了解Oracle's Transaction Management model .很多事情在纯 SQL 中是可能的,不需要过程框架。

关于sql - Oracle中如何将select语句的结果存储到临时表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48982165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com