admin

一个存储过程创建的临时表是否可以在另一个存储过程中使用?

sql

我有一个存储过程,该存储过程通过使用CONTAINSTABLElike(我放置了一段存储过程代码)来创建具有找到的索引的临时表:

CREATE TABLE #tmpTable(
  ID INT,
  RANK INT)

 SELECT @query = ' 
  SELECT 
    DISTINCT ID AS T_ID,
   indexTable.RANK AS RANK
  FROM 
   MyTable
  INNER JOIN
   CONTAINSTABLE(MyTable, (*), "ISABOUT('example*')") AS indexTable
  ON
   MyTable.ID = indexTable.[KEY]
  ORDER BY RANK DESC'

我想在可能的情况下使用临时表到另一个存储过程中,以将其值用于其他目的,并避免做两次相同的事情。

如果不可能,那么您能否建议我在不同存储过程中重用表数据的最佳方法。另外,我知道我无法在存储过程中创建视图,因此视图已不在讨论范围之内。


阅读 254

收藏
2021-06-07

共1个答案

admin

使用GLOBAL临时表

CREATE TABLE ##tmpTable(
  ID INT,
  RANK INT)

您可以通过在表名前添加双哈希(##)来创建全局临时表

一旦通过连接创建了该表(例如永久表),则任何用户都可以通过任何连接使用它。只有关闭所有连接后,才能将其删除。

编辑:

为了检查临时表的存在,您可以使用以下语句/检查。

if object_id('tempdb..##tmpTable') is not null
begin
    drop table ##tmpTable
end
2021-06-07