ibatis 临时表 怎么定义使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ibatis 临时表 怎么定义使用?相关的知识,希望对你有一定的参考价值。

参考技术A ibatis是基于sqlmap的啊,直接写sql语句就完了啊。
select * from (select * from student) as a
这个a就是临时表了。本回答被提问者和网友采纳

TSQL 定义临时表(或表变量)而不定义模式?

【中文标题】TSQL 定义临时表(或表变量)而不定义模式?【英文标题】:TSQL Define Temp Table (or table variable) Without Defining Schema? 【发布时间】:2010-10-15 20:26:36 【问题描述】:

有没有一种方法可以在不预先定义其架构的情况下定义临时表?

【问题讨论】:

【参考方案1】:

是的,您可以使用

创建它
SELECT INTO ...

我们说

SELECT * INTO #t
FROM OPENQUERY( 'server',
'exec database.dbo.proc_name value1, value2, ... ' )

【讨论】:

【参考方案2】:

您不需要 OPENQUERY。只需将“INTO #AnyTableName”放在选择列表和任何查询的 FROM 之间...

SELECT *
    INTO #Temp1
    FROM table1
    WHERE x=y

【讨论】:

或 Select * into #Temp1 from table1 where 0 = 1 如果您使用此方法,请不要忘记在程序结束时执行drop table #Temp1【参考方案3】:

实际上使用表 VARIABLE(内存中的表)是最佳方式。 #table 在 temp db 中创建一个表,并且 ##table 是全局的 - 两者都有磁盘命中。考虑一下交易数量的放缓/打击。

CREATE PROCEDURE [dbo].[GetAccounts] 
    @AccountID BIGINT,
    @Result INT OUT,
    @ErrorMessage VARCHAR(255) OUT
AS
BEGIN
    SET NOCOUNT ON;
    SET @Result = 0
    SET @ErrorMessage = ''

    DECLARE @tmp_Accounts TABLE (
                                                AccountId BIGINT,
AccountName VARCHAR(50),
...
)

INSERT INTO @tmp_Accounts ([AccountId], [AccountName]...
)
SELECT AccountID, AccountName
FROM Accounts
WHERE  ...


    IF @@Rowcount = 0
        BEGIN
            SET @ErrorMessage = 'No accounts found.'
            SET @Result = 0

            RETURN @Result
        END
    ELSE
        BEGIN
            SET @Result = 1

            SELECT *
            FROM @tmp_Accounts
        END 

注意您插入此临时表的方式。

这样做的缺点是可能需要更长的时间来编写,因为您必须定义表变量。

我还推荐 RedGate 的 SQL Prompt for Query Analyzer。

【讨论】:

但是,表变量必须在编译时而不是运行时定义,对吗?为此,我需要一个动态生成的表格。 呃,但这太冗长了,特别是因为 TSQL 没有“插入或更新”语句...... @BlueRaja-DannyPflughoeft - 您可以使用 MERGE 命令获取“插入或更新”行为。 msdn.microsoft.com/en-us/library/bb522522.aspx 表变量更快因为它们只在内存中的想法似乎是不正确的。根据this Microsoft FAQ 表变量可以存储在 tempdb 中,因为它们可能比内存可以容纳的更大。它的问题/答案#4。 不仅没有回答问题,而且在何时以及为什么使用表变量上错了。 Speedwise,这取决于您将如何查询它,以及它将有多大。没有统计数据。您不能创建二级索引。你不能改变它。也没有回滚。而且范围非常有限。这也带来了它的一些优势。

以上是关于ibatis 临时表 怎么定义使用?的主要内容,如果未能解决你的问题,请参考以下文章

oracle存储过程中临时表的使用,该怎么处理

sql如何创建临时表

SQL怎么创建一个临时表

MySQL创建临时表?

mysql数据库怎么把查询出来的数据生成临时表

oracle存储过程中临时表的使用,该怎么处理