问题标签 [temp-tables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6301 浏览

sql - 如何将单个结果集从返回多个集的 SQL 存储过程保存到临时表?

我需要将存储过程的结果集存储在临时表中(使用 SQL Server 2000)。从我读过的内容来看,这个(结构不佳的例子)应该可以工作:

但我得到:“插入错误:列名或提供的值的数量与表定义不匹配。”

检查过程(我无法编辑)揭示了这一点:

所以它实际上是在回显作为第二个结果集传递给它的参数。(我不知道为什么;我想任何调用该过程的东西都会知道它传入了什么数据。)

我的测试使我认为第二个结果集是导致插入失败的原因 - 就像 SQL 试图将结果集合并在一起并失败。

我只需要将第一个结果集保存到我的临时表中。我怎样才能做到这一点?

编辑

感谢您指出 CLR 存储过程,但该功能是在 SQL 2005 中引入的 - 它不适用于 2000。(但我以前不知道它们,它们看起来在我们升级时会很有用。)

由于唯一的其他答案看起来是“你不能” - 我想这对我来说又回到了绘图板上。

0 投票
3 回答
14643 浏览

sql - 全局临时表删除操作

如何检查 SQL Server 中是否存在全局临时表,如果存在则删除该全局临时表?

我正在尝试执行此操作:

...但它不工作。

0 投票
4 回答
8834 浏览

sql - SQL 2008 中的 TEMPORARY TABLE 和 TABLE VARIABLE 有什么区别?

有什么区别:

在 SQL Server 2008 中?

0 投票
4 回答
10493 浏览

sql-server - 表变量在 SQL Server 存储过程中插入时性能不佳

我们在存储过程中使用表变量时遇到性能问题。

这是实际发生的情况:

SELECT 返回 138 个结果,但插入 TABLE 变量需要 1min15 但是当我使用具有相同 SELECT 的临时表时,woops 需要 0sec:

什么可能导致这种行为?

0 投票
3 回答
1540 浏览

sql - 是否应该使用临时表在存储过程之间传递数据?

我有许多搜索函数(存储过程),它们需要返回具有完全相同列的结果。

这是采取的方法:

每个存储过程都具有一般结构:

CREATE TABLE #searchTmp (CustomerID uniqueIdentifier)

在上面,spSearchResults 在选择中使用#searchTmp 表。spSearchResults 将始终返回具有相同列的表,并且具有相当多的连接。

但是,与其使用临时表,不如使用以下方法更容易接受:

SELECT col1, col2, col3, col4, .... etc, lots of columns ... FROM table1 LEFT JOIN table 2 ON ... etc, lots of joins ... WHERE ... DO ACTUAL SEARCH HERE ...

如果有 10 种不同的搜索要做(例如,根据邮政编码搜索客户,根据姓氏搜索等),第二种方法意味着有很多重复的列和指定的连接。如果使用搜索函数的代码发生变化,需要返回一个新列,那么就有 10 个存储过程需要更新。

我完全赞成第一种方法,但我只是想知道第二种方法有什么好处。表现?

还是有第三种方法?

0 投票
2 回答
9064 浏览

php - 如何在 MySQL 中创建临时表以将表数据输出为 CSV 文件?

我有一个用于从数据库表创建 CSV 文件的脚本,它工作正常,除了它输出表中的所有数据,而且我需要它只为当前登录的用户输出数据。我正在开发的应用程序是让用户能够存储他们已经阅读、想要阅读等的书籍列表,并且我希望能够允许他们下载他们可以导入 Excel 的书籍列表例如。(考虑到还有 OpenOffice 等以及 MS Excel,CSV 文件会是最好的选择吗?)

我发现我需要创建一个临时表来使用选择查询来仅选择属于当前登录用户的记录。我可以使用 访问当前用户的数据WHERE username='$session->username'

我认为在尝试运行输出数据以供在 CSV 文件中使用的查询之前创建临时表就像创建临时表一样简单,然后再删除表,但我再次尝试使用临时表创建 CSV 代码在 CSV 内容之前创建的表,生成的 CSV 文件再次包含所有用户的所有记录。

有一个设置数据库连接属性的配置文件,还有用于创建文件的表,作为变量$table,我已将其设置为我要创建的临时表的名称。

这是我得到的代码:

它可以完美地输出所有数据,但是当我尝试将它与临时表一起使用时仍然会输出所有数据。顺便说一句,我也尝试删除从末尾删除临时表的指令,这没有任何区别。此外,检查 PhpMyAdmin,似乎没有创建临时表。我显然在这里做错了什么或错过了什么,但我不知道是什么。

0 投票
2 回答
1213 浏览

c# - 如何将 SQL 临时表传递给 C# 存储过程

将临时表传递给 C# 存储过程(SQL 2008)的最佳方法是什么?我是否坚持将临时表名称作为文本传递并从 C# 运行选择?

我希望使用表值参数,但 C# sprocs 似乎不支持它们。

0 投票
5 回答
17615 浏览

sql - 临时表的寿命

我有以下程序:

如果在调用 DROP TABLE 之前出现异常会发生什么?foo 退出后 tempTable 还会存在吗?

如果是这样,下次调用 foo 时可能会失败,因为 tempTable 已经存在。那应该怎么处理。

编辑:我正在使用informix 11.5

0 投票
1 回答
4890 浏览

python - 我可以在 SQLAlchemy 中创建临时表而不附加到 Table._prefixes 吗?

我想在 SQLAlchemy 中创建一个临时表。我可以通过调用一个对象来构建一个CREATE TABLE带有子句的语句,但这不如用于向数据操作语言表达式添加前缀那么优雅。TEMPORARYtable._prefixes.append('TEMPORARY')Tabletable.select().prefix_with()

.prefix_with()DDL是否有等价物?

0 投票
3 回答
4872 浏览

database - Oracle 10g 临时表

我正在尝试将存储过程中使用的永久表转换为全局临时表。我查看了这些永久表上的统计数据,其中一些表有数千万行数据,如果大小为千兆字节(最大 10 GB),则按顺序排列。

所以,

应该成为

我正在创建一个等效的全局临时表,其中的行应保留到每个现有永久表的会话结束为止。此全局临时表将在过程中使用,而不是永久表。
EXECUTE IMMEDIATE 'TRUNCATE ...'在开始时,INSERT /*+ APPEND */ INTO在稍后的某个时间点)

所有永久表都在一个大表空间中创建BIGTABLESPACE

Oracle 文档声明将在用户的临时表空间中创建全局临时表(我假设这是TEMP)。这样做的问题是 TEMP 表空间很小,并且范围没有设置为增长到我需要它们在过程中增长的大小。

TEMP空间是在数据库创建期间创建的

永久表(我打算替换)最初是在表空间中创建的BIGTABLESPACE

永久表索引最初是在表空间中创建的BIGTABLESPACE

  • 用全局临时表替换这些永久表可行吗?
  • TEMP 表空间在扩展 TEMP 表空间时会遇到问题。有没有办法在表空间中创建全局临时表及其BIGTABLESPACE索引BIGINDXSPACE
  • 如果不是,我怎样才能使TEMP表空间表现得像一个大文件表空间并实现索引/表分离?
  • 我可以创建两个TEMP大文件表空间并在其中一个中创建索引并在另一个中创建表吗?

我想使用全局临时表,但我在过程中处理的数据量似乎超出了全局临时表的设计。有什么建议么?