从另一个存储过程调用 Sybase 存储过程而不显示调用的存储过程结果

Calling a Sybase stored procedure from another stored procedure without displaying called stored procedure results

我正在从另一个存储过程 Y 调用 Sybase 存储过程 X。在 the answer to a similar question 之后,我创建了一个 #tmp_table 来保存存储过程 X 的结果。

create table #tmp_table(
    col1 int,
    col2 varchar(100),
    ...
) exec sp_stored_procedureX 888, 'Parameter2', ...

select * from #tmp_table

上面成功地将存储过程 X 的结果加载到 #tmp_table 中,但它显示了两次存储过程 X 的结果。我猜第一个来自“exec sp_stored_procedureX ...”部分,第二个来自“select * 来自#tmp_table”,这是我想要的。我不想显示第一个“exec sp_stored_procedureX ...”部分的结果。如何将数据存储到#tmp_table而不显示它?

如果需要更多 clarification/information,请告诉我。

感谢和问候,

京都

您的语法对于 ASE 中的正常 table 不正确。但是对于ASE,有一个特殊的table名称RPCtable可以将过程的输出映射为table格式的输出。也许这就是您正在寻找的……而且也可以从远程 ASE 调用它。 这是一个示例 --

use omni_rpc 
go 

create table rmtbl 
( 
aint int null, 
bchr char(10) null, 
cchr char(10) null 
) 
go 

insert rmtbl values (11, "b_row1", "c_row1") 
insert rmtbl values (22, "b_row2", "c_row2") 
insert rmtbl values (33, "b_row3", "c_row3") 
insert rmtbl values (44, "b_row4", "c_row4") 
insert rmtbl values (55, "b_row5", "c_row6") 
go 

create proc procImm @Colnames varchar(100), @NameT varchar(20), @nameCol varchar 
(20), @value char(2) 
as 
execute ('select ' + @Colnames + ' from ' + @NameT + ' where ' 
+ @nameCol + ' = ' + @value) 

Here @NameT and @Colnames are command parameters, and @value is a search parameter based on the terms defined at the beginning of the paper. 

In the local server: 

use test 
go 
sp_addobjectdef myrpc_imm, "THIS.omni_rpc..procImm", "rpc" 
go 
(return status = 0) 

create existing table myrpc_imm 
( 
NameT varchar(20), 
nameCol varchar(20), 
value varchar(10) 
) 
external procedure at "THIS.omni_rpc..procImm" 
go 
select * from myrpc_imm 
where NameT = 'rmtbl' and nameCol = 'aint' and value = '33' 
go 
NameT                nameCol              value 
-------------------- -------------------- ---------- 

(0 rows affected) 

dbcc traceon(11225) 
go 
00:00000:00017:2004/04/01 12:18:47.03 server DBCC TRACEON 11225, SPID 17 
DBCC execution completed. If DBCC printed error messages, contact a user with 
System Administrator (SA) role. 

select * from myrpc_imm 
where NameT = 'rmtbl' and nameCol = 'aint' and value = '33' 
go 
NameT                nameCol              value 
-------------------- -------------------- ---------- 
33                   b_row3               c_row3 

(1 row affected)