标签: temp-tables

如何从临时表插入到表中?

我的临时表中已有值,我想将其插入到我的表中。

我遵循这个语法

IF NOT EXISTS (SELECT 1 FROM ABC abc JOIN #Temp t ON abc.ID = t.ID)

insert into MyTable(Id,Name)
select values (t.ID, t.Name)
From t
Run Code Online (Sandbox Code Playgroud)

我只有名称 t 作为我在插入之前在条件中创建的别名。

它是否正确?有些人使用@等。我很困惑。

sql sql-server temp-tables sql-server-2008

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

PostgreSQL 更新自

如果这个问题已经在其他地方得到了回答,我深表歉意,恐怕我需要对 PostgreSQL 中的 UPDATE FROM 子句进行更多的澄清/整理。

基本上我有一个临时表,其中包含一些中间计算的内容,我想用它们来更新主表。这个临时表包含两个外键和一个分数,例如:

score   fk_offer    fk_searchprofile
65      1764        12345
...
Run Code Online (Sandbox Code Playgroud)

我测试了要使用选择更新的行(该表temp_offerids_with_score包含需要更新的报价):

SELECT s.pkid, tmp.fk_offer, s.fk_category, tmp.score, tmp.fk_searchprofile
FROM 
            temp_weighted_scores_offers AS tmp
            INNER JOIN sc_sp_o_c_score AS s
            ON tmp.fk_offer = s.fk_offer
WHERE 
            tmp.fk_offer IN (SELECT fk_offer FROM temp_offerids_with_score)
            AND 
            s.fk_category = 1
            AND s.fk_searchprofile = 12345;
Run Code Online (Sandbox Code Playgroud)

这将正确返回预期的行数(在本例中为 10):

pkid    fk_offer    fk_category  score  fk_searchprofile
1       47          1            78     12345
2       137         1            64     12345
3       247         1            50     12345
...
Run Code Online (Sandbox Code Playgroud)

但是,如果我在 UPDATE FROM 中使用相同的内容:

UPDATE sc_sp_o_c_score …
Run Code Online (Sandbox Code Playgroud)

postgresql temp-tables sql-update

3
推荐指数
1
解决办法
6587
查看次数

如何在SQL SERVER中创建临时表?

我正在尝试从另一个表在 SQL Server 中创建临时表,例如在 Redshift 中我执行以下操作

Create temporay table CARS as (
SELECT *
FROM BD_CARS_111
);

SELECT *
FROM CARS;
Run Code Online (Sandbox Code Playgroud)

SQL SERVER中有类似的语句吗?

sql sql-server temp-tables

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

如何通过Sql Server和.Net处理存储过程

我使用存储过程超过1.5年.但我从未考虑过如何从UI或其他存储过程中检索数据.

当我写一个简单的存储过程.例如.

CREATE PROCEDURE sp_test
AS
BEGIN
 SELECT * FROM tblTest --Considering table has 3 columns.
END
Run Code Online (Sandbox Code Playgroud)

C#如何将此结果导入DataTable.

每当我必须在另一个过程中使用此过程的结果时,我认为我们必须使用table数据类型创建一个表值参数,并将其结果分配给表变量.我从来没有尝试过.

CREATE PROCEDURE sp_testcall
AS
BEGIN
 @temp = exec sp_test -- I think this would be the way, never tried
END
Run Code Online (Sandbox Code Playgroud)

如果上面的示例代码为true,那么使用上述方法和查询将记录插入临时表之间有什么区别?

CREATE PROCEDURE sp_test
AS
BEGIN
 SELECT * INTO #tmp FROM tblTest --Considering table has 3 columns.
END
Run Code Online (Sandbox Code Playgroud)

似乎将结果复制到临时表需要sql server的另一项努力.但幕后会发生什么?它会直接将结果的引用分配给表值参数,还是使用与临时表相同的过程?

我的问题可能不太清楚.但我会尽力改进.

c# sql database stored-procedures temp-tables

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

在SQL Server 2008中的存储过程之间使用临时表

我目前有一个主存储过程调用许多存储过程:

Main --| 
     --|
       --| > Exec Pre-processing SP (create and populate #temp table)
     --|
       --| > Exec Actual update
     --|
       --| > Exec Post-Process (consume and drop #temp table)
Run Code Online (Sandbox Code Playgroud)

我目前遇到的问题是我需要从数据库中获取原始值,并将值传递到主存储过程,以便我可以在最后一步(存储过程)中调用更新后处理.

我无法更改存储过程签名或主存储过程.

当我尝试执行此方案时,我在后处理存储过程中得到一个无效对象.

如何将值从第一个存储过程传递到最后一个存储过程.

t-sql stored-procedures temp-tables sql-server-2008

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

SQL Server,问题在TSQL中创建临时表

嗨,当我执行以下TSQL时,我收到以下错误消息.但是SQL语法有什么不对吗?

create table #tb ([t1] tinyint, [t2] varchar(50))
insert into #tb values
    (1, 'a'), 
    (2, 'b')
Run Code Online (Sandbox Code Playgroud)

消息102,级别15,状态1,行3'','附近的语法不正确.

SQL查询窗口中没有其他内容.运行SQL Server 2005.

sql t-sql sql-server sql-server-2005 temp-tables

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

填充临时表的最快X ++代码

我需要在InventTrans上循环以累积某些日期的itemId数量,并使用此临时表作为数据源在表单中填充结果的临时表.我使用了一个类,对于一个itemId,这个过程很长(约5-10秒).

哪个代码最快?

  1. 使用执行该过程的类
  2. 临时表上的方法
  3. 在调用者表单上单击按钮()的过程

我该如何改进我的代码?

temp-tables x++ axapta

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

在迭代循环中连接字符串:+ =不能按预期工作

我有本地表和字符串,必须从其值填充:

    DECLARE @#SomeTable  TABLE ( some columns ..)
    DECLARE @SomeString  varchar(8000) = 'init string'
Run Code Online (Sandbox Code Playgroud)

迭代它

    WHILE EXISTS(SELECT * FROM  @#SomeTable)
     BEGIN
        // [somecolumn] is declared temp variable
        SELECT TOP 1 @somecolumn = somecolumn FROM  @#SomeTable

        PRINT 'before ' + @SomeString // 'init string'
        PRINT [some values from SomeTable]  // this OK
        SET @SomeString += [some values from SomeTable] 
        PRINT 'after ' +  @SomeString //'init string' UPDATE NOT TAKE PLACE!!!!

        DELETE  @#SomeTable Where somecolumn = @somecolumn
     END
Run Code Online (Sandbox Code Playgroud)

我发现连接失败了.为什么?

编辑:

这是一段原始代码:

    /*Represents …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server temp-tables

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

无法访问从代码创建的临时表

我对临时表有一个非常奇怪的问题.我在代码中创建一个临时表,它显示在MSSQL中的tempdb.sys.tables下,但是如果我尝试从中选择,我会得到一个

无效的对象名称'#Update'.错误

如果我将创建临时表sql直接从我的代码中剪切并粘贴到mssql管理器中并运行它,它将创建临时表,我可以从中进行选择.然后它将在tempdb.sys.tables中显示两个ideintical临时表.

也许我忽略了一些东西,但这看起来很奇怪.

using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();

            //Execute the command to make a temp table
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "create table #UpdatePOS (Store_ID nvarchar(50), POSItem_Id nvarchar(50), POSSalesDate datetime, LastModifiedWhen datetime, UpdateResult bit, QTY decimal(18,0));";
                cmd.ExecuteNonQuery();
            }

        }
Run Code Online (Sandbox Code Playgroud)

谢谢!

sql-server ado.net temp-tables sql-server-2008

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

Oracle 18c,如何在Private临时表中定义BLOB列?

在Oracle数据库中编写某些过程(使用18c)时,我遇到了一个问题,我试图用BLOB数据类型的列定义PRIVATE临时表,但它没有让我.

PRIVATE创建临时表的代码(还有一些其他列,但我注释掉了每个其他列,除了下一段中提到的那两列):

CREATE PRIVATE TEMPORARY TABLE ora$ptt_Test (
        id NUMBER(19), 
        userdata BLOB);
Run Code Online (Sandbox Code Playgroud)

当我尝试执行上面的语句时,我得到:ORA-14451:不支持的功能,临时表14451. 00000 - "不支持的功能与临时表"*原因:尝试创建IOT,指定物理属性,指定分区或平行条款.*行动:不要这样做.

但如果我评论userdata列,它会成功执行.

我在Oracle 18c文档中找到的所有内容是,创建PRIVATE临时表(自18c以来可用)的限制/约束应该与PUBLIC临时表(在版本18c之前也可用)相同,但事实并非如此,因为我试图用BLOB列定义PUBLIC临时表,并且它有效.

我真的很感激任何帮助.

oracle blob temp-tables

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