这是一个Teradata v14特定问题。将选择语句的结果存储在存储过程中
如何在存储过程中存储查询结果以供进一步处理。
选项我已经看过:
- 挥发性临时表 - 但是,这需要先于存储 过程
- 派生表创建 - 但只适用于一个查询 的时间结果
结果需要在存储过程的持续时间内可用。
还有其他的选择吗?
更新2014年6月16日: 根据答案和评论似乎挥发性表是最好的答案。然而,然后我们尝试使用易失性表存储过程抱怨该表不存在。有没有解决的办法?
这是一个Teradata v14特定问题。将选择语句的结果存储在存储过程中
如何在存储过程中存储查询结果以供进一步处理。
选项我已经看过:
结果需要在存储过程的持续时间内可用。
还有其他的选择吗?
更新2014年6月16日: 根据答案和评论似乎挥发性表是最好的答案。然而,然后我们尝试使用易失性表存储过程抱怨该表不存在。有没有解决的办法?
您是否考虑过全球临时表?
表定义存储在DBC数据字典中,并在被SQL引用时为会话持续时间实例化。像易失性表一样,全局临时表也是会话特定的。与易失性表不同,全局临时表依赖于用户的临时空间而不是假脱机空间。
你的意思是你想存储数据以便在你的proc中进一步处理吗?这是什么意思,在程序之前需要创建易失性表格?您只需在过程中声明该表。 – Andrew
@Andrew:是的,我的意思是我想在存储过程中进行处理。存储过程可以同时执行多次。在存储过程中声明易失性表会抛出一个错误,指出该表不存在。 – L4zl0w
不,挥发性表不是最好的答案。 Rob建议使用全局临时表。在你创建你的SP之前创建它**(你也可以在你的SP中创建它,并捕获“表已存在”的错误,但它不值得在源代码中的开销),在你的SP中你只需使用它像任何其他表一样,每个会话都会有它自己的物化实例。 – dnoeth