SQL Server 根据存储过程的结果集创建临时表
最近见很多人问到如何根据一个存储过程的结果集创建临时表,如果存储过程的结果集字段固定则可以事先建好再写入数据,但如果结果集不固定就无法事先建了,下面来测试下如何根据不定字段结果集创建临时表。
SELECT * INTO #temp_table FROM OPENDATASOURCE('SQLOLEDB','Data Source=.;User ID=sa;Password=sa2014').'test.dbo.sp_t 2' SELECT * INTO #temp_table FROM OPENROWSET('SQLNCLI', 'Server=.;Trusted_Connection=yes;','EXEC test.dbo.sp_t 2') temp
如果执行报,"链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI11" 返回了消息 "登录超时已过期",错误。在配置管理器中开启实例的TCP\IP协议即可。
但对于有参数的存储过程怎么处理呢?OPENDATASOURCE和OPENROWSET都不支持传参,目前我所能想到的方法是使用动态SQL(如有其它方法的可以告诉我一下哈),示例如下。
DECLARE @a VARCHAR(2)='2'; DECLARE @str VARCHAR(100)='EXEC test.dbo.sp_t '+@a,@s NVARCHAR(max); SET @s= 'SELECT a.* INTO #tt FROM OPENROWSET(''SQLNCLI'', ''Server=.;Trusted_Connection=yes;'','''+@str+''') temp'; EXEC(@s);
分类:
SQL Server DBA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律