我有一个存储过程,该存储过程通过使用CONTAINSTABLElike(我放置了一段存储过程代码)来创建具有找到的索引的临时表:
CONTAINSTABLE
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'
我想在可能的情况下使用临时表到另一个存储过程中,以将其值用于其他目的,并避免做两次相同的事情。
如果不可能,那么您能否建议我在不同存储过程中重用表数据的最佳方法。另外,我知道我无法在存储过程中创建视图,因此视图已不在讨论范围之内。
使用GLOBAL临时表
CREATE TABLE ##tmpTable( ID INT, RANK INT)
您可以通过在表名前添加双哈希(##)来创建全局临时表
一旦通过连接创建了该表(例如永久表),则任何用户都可以通过任何连接使用它。只有关闭所有连接后,才能将其删除。
编辑:
为了检查临时表的存在,您可以使用以下语句/检查。
if object_id('tempdb..##tmpTable') is not null begin drop table ##tmpTable end