【发布时间】:2018-06-14 15:38:14
【问题描述】:
我找不到问题的完整解决方案。我有一个将动态输入作为参数值的现有存储过程。我需要执行这个过程(使用动态变量)并且想以某种方式 SELECT * INTO #mytable 而不必声明临时表的模式。
我尝试过使用 OPENROWSET,但它不允许我指定变量(只能硬编码):
select * into #table from openrowset('SQLNCLI', 'Server=localhost;Trusted_Connection=yes;', 'exec SERVER..MYSTOREDPROCEDURE @parameter = 123')
我知道的唯一另一种方法是将它包装在一个字符串中并使用 EXEC(@sql),但我不知道如何从中“SELECT * INTO #table”。
我有哪些选择?我可以创建一个可以返回动态表的 UDF 表函数吗?值得怀疑...
【问题讨论】:
-
我真的不明白这里有什么问题?如果您
CREATE一个临时表并在同一连接中执行动态 SQL,则可以引用它。例如:CREATE TABLE #test (ID int); EXEC sp_executesql N'INSERT INTO #test VALUES (1);'; SELECT * FROM #test; DROP TABLE #test; -
@Larnu 我想我找到了,他不想声明临时表的架构。
-
如果你有能力创建它,你的其余代码打算如何使用这个具有未知模式的表?
标签: sql sql-server