【问题标题】:How can I insert the message results of a query into a #temptable in sql?如何将查询的消息结果插入到 sql 中的#temptable 中?
【发布时间】:2016-12-07 00:42:17
【问题描述】:

当我在 Management Studio 中运行此命令时:

DBCC CHECKIDENT ('TBL_NAME', RESEED, 0);

输出是:

检查身份信息:当前身份值“0”,当前列值“0”。
DBCC 执行完成。如果 DBCC 打印错误消息,请联系您的系统管理员。

我想获得该输出并将其插入#temptable,有什么想法吗?

【问题讨论】:

标签: sql-server-2008 tsql


【解决方案1】:

如果您的目的是获取特定表的最新生成标识并将其存储到临时表中,从 SQL Server 2008 R2 开始,您可以像这样使用 IDENT_CURRENT 函数:

SELECT IDENT_CURRENT('TBL_NAME') AS CurrentIdentity
INTO #temptable

对于早期版本的 SQL Server,您可以访问

SELECT IC.last_value AS CurrentIdentity
INTO #temptable
FROM sys.identity_columns IC
     INNER JOIN sys.objects O ON IC.object_id=O.object_id
WHERE O.object_id=OBJECT_ID('TBL_NAME')

通过 OUTPUTBUFFER 函数可以捕获 DBCC 或任何其他存储过程的 PRINT 输出,但存在许多限制,如下所示:

DBCC CHECKIDENT ('TBL_NAME', RESEED, 0);
CREATE TABLE #temptable TABLE ([Buffer] NVARCHAR(MAX))
INSERT @output
EXEC ('DBCC OUTPUTBUFFER(@@SPID)')
SELECT * FROM #temptable

我强烈反对使用 OUTPUTBUFFER,除非用于故障排除。

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 2015-05-13
    • 2014-11-08
    • 2023-02-25
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多