标签: temp-tables

使用openrowset将Excel文件读入临时表; 我该如何引用该表?

我正在尝试编写一个存储过程,将Excel文件读入临时表,然后按下该表中的一些数据,然后将该表中的选定行插入永久表.

所以,它是这样开始的:

SET @SQL = "select * into #mytemptable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database="+@file+";HDR=YES', 'SELECT * FROM [Sheet1$]')"

EXEC (@SQL)
Run Code Online (Sandbox Code Playgroud)

这似乎有用.

但是,如果我尝试这样的事情:

Select * from #mytemptable
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

无效的对象名称'#mytemptable'

为什么#mytemptable不被认可?有没有办法让#mytemptable可以访问存储过程的其余部分?

提前谢谢了!

sql-server temp-tables openrowset

2
推荐指数
1
解决办法
1万
查看次数

Microsoft SQL Server 2005检查临时表是否为空

是否有快速/有效的方法来检查表是否为空?

DECLARE @StartEndTimes TABLE
(
    id bigint,
    StartTime datetime,
    EndTime datetime
)

IF @StartEndTimes IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

sql-server temp-tables

2
推荐指数
1
解决办法
5219
查看次数

Oracle临时表如何在这样的存储过程中正常工作?

假设我在存储过程中使用以下Oracle代码:

CREATE GLOBAL TEMPORARY TABLE temp_table (
    field1 NUMBER,
    field2 NUMBER
)
ON COMMIT DELETE ROWS
Run Code Online (Sandbox Code Playgroud)

可以在任何单个时刻由不同用户同时调用该特定存储过程.据我了解,临时表中用户可见的数据对他或她来说是私有的,这些行在COMMIT上被删除.

但是,以下如何处理此问题:

  1. 每次调用存储过程调用CREATE语句是否安全?这会导致错误导致已经存在"可能"由不同用户(/会话)创建的临时表吗?或者这样可以,因为服务器无论如何都会私下对待它们?

  2. ON COMMIT DELETE ROWS究竟发生了什么?我假设这只删除了特定用户会话的特定行,让其他会话的数据保持不受干扰,对吗?

任何帮助,将不胜感激.:)

oracle temp-tables

2
推荐指数
1
解决办法
4172
查看次数

如何在SQL中更改临时表中的列的数据类型

有没有办法在将值保存到临时表时更改(增加)列的数据类型?

SELECT TableA.ID_NO, sum(TABLEA.COST * TABLEB.QTY) as TOTAL
INTO #matCalc
FROM TABLEA A 
INNER JOIN TABLEB 
ON A.ID_NO = B.ID_NO
Run Code Online (Sandbox Code Playgroud)

我们在实际查询中有更大的计算.当我们执行存储过程时,我们得到一个错误"算术溢出错误,将数字转换为数据类型数字".

非常感谢任何解决方案.

谢谢.

t-sql sql-server temp-tables

2
推荐指数
1
解决办法
1万
查看次数

在临时表创建中定义键

如何为从SELECT语句创建的临时表定义键?

我有:

CREATE temporary TABLE _temp_unique_parts_trading 
engine=memory AS 
  (SELECT parts_trading.enquiryref, 
          sellingcurrency, 
          jobs.id AS jobID 
   FROM   parts_trading, 
          jobs 
   WHERE  jobs.enquiryref = parts_trading.enquiryref 
   GROUP  BY parts_trading.enquiryref) 
Run Code Online (Sandbox Code Playgroud)

但是我在哪里定义键?

mysql temp-tables

2
推荐指数
1
解决办法
7734
查看次数

SQL Server 2012临时表OBJECT_ID问题

我们在升级到SQL Server 2012时遇到问题.我使用以下脚本创建过去在SQL Server 2008 R2上运行良好的临时表,但现在它在2012年生成错误:

if (OBJECT_ID( 'tempdb..#idstable') > 0)
    truncate table #idstable
else
    create table #idstable (id int not null)
Run Code Online (Sandbox Code Playgroud)

抛出的错误是

数据库中已经有一个名为"#idstable"的对象.

这显然不是我第一次使用脚本时抛出的(在同一个事务中).

任何的想法?谢谢!

sql sql-server temp-tables sql-server-2012

2
推荐指数
1
解决办法
2851
查看次数

MySQLdb为`INT`的`sum`返回`Decimal`

这是我用来重现问题的表定义:

create table test_sum_type 
(
  kind char(1) not null,
  n tinyint not null
);
Run Code Online (Sandbox Code Playgroud)

测试数据:

+------+---+                                                                                                                                                                                                    
| kind | n |                                                                                                                                                                                                    
+------+---+                                                                                                                                                                                                    
| A    | 1 |                                                                                                                                                                                                    
| B    | 1 |                                                                                                                                                                                                    
| A    | 2 |                                                                                                                                                                                                    
+------+---+  
Run Code Online (Sandbox Code Playgroud)

查询使用MySQLdb:

In [32]: cur.execute("select kind, sum(n) from test_sum_type group by kind")                                                                                                                                    
Out[32]: 2L                                                                                                                                                                                                     

In [33]: cur.fetchall()                                                                                                                                                                                         
Out[33]: (('A', Decimal('3')), ('B', Decimal('1')))                                                                                                                                                             

In [34]: cur.execute("select kind, n from test_sum_type")                                                                                                                                                       
Out[34]: 3L                                                                                                                                                                                                     

In [35]: cur.fetchall()                                                                                                                                                                                         
Out[35]: (('A', 1), ('B', 1), ('A', 2)) …
Run Code Online (Sandbox Code Playgroud)

python mysql temp-tables mysql-python

2
推荐指数
1
解决办法
3856
查看次数

C#选择进入解释/临时表

基于SQL临时表的教程,应该可以通过使用创建临时表,SELECT * INTO #tempTable FROM tableA但是SQLException当我试图SELECT * FROM #tempTable说出来时它会抛弃我Invalid object name '#tempTable'.我可以知道使用临时表的正确方法是C#什么?

string sql = "SELECT * INTO ##tempTable FROM (SELECT * FROM tableA)";
using (var command = new SqlCommand(sql, connection))
{
    string sqlNew = "SELECT * FROM ##tempTable";
    using (var command2 = new SqlCommand(sqlNew, connection))
    {
        using (var reader = command2.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine(reader["column1"].ToString());

            }
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的目标是尝试使用从中检索的数据sqlVar并将它们插入到tempTable中并对其执行一些操作.非常感谢如果有一些示例代码如何使代码适合上述代码.谢谢.

c# sql temp-tables

2
推荐指数
1
解决办法
1万
查看次数

从sql server中的子查询创建临时表导致错误

我有类似的东西

 if object_id('tempdb.#TempHourlyTable') is not null
drop table #TempHourlyTable

 select * into #TempHourlyTable
 from (
         select top 10 * from customers
      )
Run Code Online (Sandbox Code Playgroud)

我收到这样的错误:

')'附近的语法不正确.

我第一次尝试使用临时表.那么这里的错误是什么?

编辑:
删除并重新创建临时表是否存在.得到错误

消息2714,级别16,状态6,行55
在数据库中已经有一个名为"#TempHourlyTable"的对象.

sql subquery temp-tables sql-server-2012

2
推荐指数
1
解决办法
1万
查看次数

数据库中已经有一个名为"#xxxx"的对象

我在一个脚本中多次删除/创建一个临时表

IF OBJECT_ID('tempdb..#uDims') IS NOT NULL
DROP TABLE #uDims

select * into #uDims from table1

.... do something else 

IF OBJECT_ID('tempdb..#uDims') IS NOT NULL
DROP TABLE #uDims

select * into #uDims from table2 -- >> I get error here

.... do something else 

IF OBJECT_ID('tempdb..#uDims') IS NOT NULL
DROP TABLE #uDims

select * into #uDims from table3  -- >> and here

.... do something else 
Run Code Online (Sandbox Code Playgroud)

当我试图运行脚本时,我得到了

There is already an object named '#uDims' in the database.
Run Code Online (Sandbox Code Playgroud)

在第二和第三"选择进入......"

这显然是一个编译时错误.如果我逐节运行脚本,那么每件事都会运行良好.

这个问题有很多解决方法,但我想知道为什么SSMS对此感到不安.

sql-server ssms temp-tables

2
推荐指数
1
解决办法
6477
查看次数