sql - 使用带有动态参数的过程选择 INTO 动态临时表
问题描述
我找不到我的问题的完整解决方案。我有一个将动态输入作为参数值的现有存储过程。我需要执行这个过程(使用动态变量)并且想以某种方式 SELECT * INTO #mytable 而不必声明临时表的模式。
我尝试过使用 OPENROWSET 但它不允许我指定变量(仅对其进行硬编码):
select * into #table from openrowset('SQLNCLI', 'Server=localhost;Trusted_Connection=yes;', 'exec SERVER..MYSTOREDPROCEDURE @parameter = 123')
我知道的唯一另一种方法是将它包装在一个字符串中并使用 EXEC(@sql),但我不知道如何从中“选择 * INTO #table”。
我有哪些选择?我可以创建一个可以返回动态表的 UDF 表函数吗?疑...
解决方案
我想我想通了。我真的只需要修改临时变量名称就可以将临时表放到全局范围内。这适用于我的实际表(为了这篇文章的目的,我重命名了它们)。
IF OBJECT_ID ('tempdb..##mytemptable') is not null drop table ##mytemptable
declare @id int = 112
declare @sql nvarchar(max) ='SELECT * INTO ##mytemptable FROM OPENROWSET(''SQLNCLI'', ''Server=localhost;Trusted_Connection=yes;'', ''exec SERVER..MyStoredProcedure @ID =' + convert(varchar(10), id) + ''')'
-- invokes and inserts into ##mytemptable
exec sp_executesql @sql
-- now I can query from the global scope
select * from ##mytemptable
推荐阅读
- c# - 如何将带有名称的完整对象转换为 json 字符串
- jquery - 使用包含特殊字符的文本创建 jQuery 对象
- flutter - 构建 Flutter 应用程序遵循哪种模式/架构?
- node.js - 使用 Cloudfront 签名 URL 时如何更改下载的文件名?
- angular - 强类型参数化选择器 ngrx
- performance - 麻烦 - IIS 突然高内存使用
- python - 如何在从服务器请求的两个以上线程之间进行管理?
- python - 零填充图像
- javascript - 从js中的xlsx文件中读取整行
- javascript - Google Script Link PDF:异常:参数不能为空:contentType(第 82 行,文件“代码”)