如何在不创建表的情况下将动态查询的结果存储在临时表中?

阿博法齐

我们正在编写一个负责获取存储过程名称的存储过程,并返回包含该存储过程列及其数据类型的结果。但是,我们遇到了执行动态查询以返回存储过程结果的问题,但是我们无法将其存储在临时表中!

您可以在下面看到我们的查询:

  DECLARE @ProcName VARCHAR(100)='spGetOraganizationsList',
  @ParamName VARCHAR(100),@DataType VARCHAR(20),
  @Query NVARCHAR(MAX)='EXEC '+'spGetOraganizationsList '

  SELECT  PARAMETER_NAME,DATA_TYPE 
  INTO #Tmp
  FROM  information_schema.PARAMETERS
  WHERE SPECIFIC_NAME=@ProcName

  DECLARE ParamCursor CURSOR 
  FOR SELECT * FROM #Tmp
  OPEN ParamCursor
  FETCH NEXT FROM ParamCursor
  INTO @ParamName,@DataType

  WHILE @@FETCH_STATUS = 0 
  BEGIN
  SET @Query=@Query+@ParamName+'=Null,'
  FETCH NEXT FROM ParamCursor INTO @ParamName,@DataType
  END
  CLOSE ParamCursor
  DEALLOCATE ParamCursor
  DROP TABLE #Tmp

  EXEC sp_executesql @Query

问题是我无法将其结果存储在临时表中,并且OPENROWSET不接受变量。

阿博法齐

我认为它来自sql概念,它不信任存储过程的结果,因此我们无法通过“在查询表中建立”方法对其进行选择或将其存储在表中。除非您创建表并定义它的列和sql对您的信任,然后将其结果插入该表中,例如,请采取以下情况

Create table test (name varchar(10),family varchar(20))


Insert into test
Exec sp-testResult

现在,如果您为表定义了错误的列,您将收到查询运行时错误。实际上,sql不会预测sp的结果,而是将其留给您来定义存储过程的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不指定表的列名的情况下将动态循环的结果存储到临时表中?

如何在不更改表架构的情况下将查询结果存储在当前表上?

如何在不创建临时表的情况下将 SQL SERVER 中的行转换为列

如何在不创建查询的情况下从 Access 表中获取值

JPA如何在不创建表的情况下查询数据库

如何在不创建目录的情况下将XML文件的内容保存到表(Oracle / PLSQL)中

如何在不创建临时文件的情况下打开存储在字符串/字节中的网页?

在JavaScript中如何在不使用JQuery的情况下使动态创建的表行可单击?

如何在不制作大的临时日志的情况下正确更新大表?

如何在不创建新表的情况下从三个表中创建所需的答案?

如何在不使用临时表的情况下避免频繁查询相同的字段?

如何使用动态SQL查询结果创建临时表

如何在不创建临时字节切片的情况下从连接中读取 Go

如何在不创建新表的情况下遍历MATLAB表

如何在不将查询结果存储在内存中的情况下实现存储库?

如何在不创建数据库中相应表的情况下创建EntitySet或模型-Entity Framework

如何在不更改查询的情况下过滤adf表的结果?

如何在不创建子shell的情况下将命令的输出存储在变量中[Bash <v4]

如何在不扫描整个表的情况下选择DBT中bigquery表的最新分区?

如何在不创建表的情况下从文本文件加载mysql中的数据(模式)

如何在临时表中显示存储过程的结果?

Cakephp:如何在不创建模型/控制器的情况下获取表数据?

如何在不声明列的情况下从 JSON 数组创建 jquery 数据表

如何在不选择工作表的情况下将整个列粘贴到excel vba中

如何在不滚动表的情况下将行插入到UITableView的顶部?

如何在不添加到第一个表的情况下将表行添加到第二个表中

使用Google工作表脚本时,如何在不创建新工作表副本的情况下将电子表格的工作表复制到另一个电子表格中?

如何在不创建特定域模型的情况下忽略命名查询中的字段

如何在不损失结果范围的情况下将C中的uint转换为int