微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将存储过程的动态结果保存到动态表中

如何解决将存储过程的动态结果保存到动态表中

我在将存储过程/标量函数的执行保存到表变量中时遇到了一些问题。

函数/存储过程返回动态列,我需要创建一个动态表来将该函数的结果保存到其中,以便我可以使用该表。

示例:存储过程 image = ImageOps.invert(image) 可以根据这些条件返回员工姓名、员工 ID 等,它们仅返回员工姓名。

有没有办法在执行存储过程或任何建议后创建一个动态表并将结果保存到其中。

谢谢

解决方法

我不喜欢经常遇到这种情况,但是当我这样做时,我所做的是将存储的 proc 输出放入全局临时表中。表的名称由用户作为参数传入。例如:

create procedure dynamicBeCareful 
    @toggle bit,@globalTempTableName varchar(50) 
as 

-- initializations

    if left(@globalTempTableName,2) <> '##'
      throw 50000,'@globalTempTableName must start with ##',1;

    declare @sql varchar(max);

-- build dynamic sql

    if @toggle = 1 
        set @sql = 'select * into @tempTable from table1';
    else 
        set @sql = 'select * into @tempTable from table2';

    set @sql = replace(@sql,'@tempTable',@globalTempTableName);

-- terminations

    exec (@sql); 

    declare @msg = 'Your results are in ' + @globalTempTableName;
    print (@msg);

然后像这样使用它:

exec dynamicBeCareful 1,'##temp';

select * from ##temp;

除了输出动态之外,它还可以让您摆脱嵌套的 insert-exec 限制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?