首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将数据从存储过程中获取到临时表中?

如何将数据从存储过程中获取到临时表中?
EN

Stack Overflow用户
提问于 2018-06-12 00:58:53
回答 2查看 0关注 0票数 0

我正在使用sybase ASE 15.寻找这样的东西

代码语言:javascript
复制
Select * into #tmp exec my_stp;

my_stp返回每行中有两列的10个数据行。

EN

回答 2

Stack Overflow用户

发布于 2018-06-12 09:15:15

这是可行的,涉及一个Sybase“ 代理表 ”,该代表另一个本地或远程对象(表,过程,视图)。下面的12.5版本,更新的版本希望有更好的方式来做到这一点。

假设你有一个存储过程定义如下:

代码语言:javascript
复制
create procedure mydb.mylogin.sp_extractSomething (
@timestamp datetime) as
select column_a, column_b
    from sometable
    where timestamp = @timestamp

首先切换到tempdb:

代码语言:javascript
复制
use tempdb

然后创建一个代理表,其中的列与结果集匹配:

代码语言:javascript
复制
create existing table myproxy_extractSomething (
column_a int not null, -- make sure that the types match up exactly!
column_b varchar(20) not null,
_timestamp datetime null,
primary key (column_a)) external procedure at "loopback.mydb.mylogin.sp_extractSomething"

注意事项:

  • “loopback”是localhost的Sybase等效物,但您可以将其替换为在服务器的sysservers表中注册的任何服务器。
  • 当Sybase执行存储的proc时,_timestamp参数被转换为@timestamp,并且所有这样声明的参数列必须定义为null。

然后你可以从你自己的数据库中选择这样的表格:

代码语言:javascript
复制
declare @myTimestamp datetime
set @myTimestamp = getdate()

select * 
from tempdb..myproxy_extractSomething
where _timestamp = @myTimestamp

这足够简单。然后插入到临时表中,首先创建它:

代码语言:javascript
复制
create table #myTempExtract (
    column_a int not null, -- again, make sure that the types match up exactly
    column_b varchar(20) not null,
    primary key (column_a)
)

并结合:

代码语言:javascript
复制
insert into #myTempExtract (column_a, column_b)
select column_a, column_b
    from tempdb..myproxy_extractSomething
    where _timestamp = @myTimestamp
票数 0
EN

Stack Overflow用户

发布于 2018-06-12 10:38:23

不确定Sybase,但在SQLServer中,以下内容应该可以工作:

插入#tmp(col1,col2,col3.)_STP

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档