Ich bin derzeit auf Sybase ASE 15.7 und schreibe eine gespeicherte Prozedur, die das Ergebnis eines anderen SP verwendet. Ich möchte es aufrufen und das Ergebnis in eine temporäre Tabelle einfügen, so dass keine Änderung für den ursprünglichen SP erforderlich ist.Wie füge ich die Ergebnismenge einer gespeicherten Prozedur in eine temporäre Tabelle ein und erhalte die Ausgabeparameter in Sybase?
zu diesem Beitrag verweis: How can I get data from a stored procedure into a temp table?
Jakub Antwort mit Proxy-Tabellen funktioniert perfekt mit der Probe SP Definition:
create procedure mydb.mylogin.sp_extractSomething (
@timestamp datetime) as
select column_a, column_b
from sometable
where timestamp = @timestamp
Allerdings gibt es noch ein letztes Stück fehlt! Wie erhalten Sie die Ausgabeparameter UND das Ergebnis? Der SP in meinem Fall ist definiert wie folgt aus:
create procedure mydb.mylogin.sp_extractSomething
(
@timestamp datetime,
@errcode char(10) output
) as
select @errcode='NOERR'
select column_a, column_b
from sometable
where timestamp = @timestamp
if (@@rowcount = 0)
begin
select @errcode = 'ERR001'
end
I definiert würden und verwendet, um die Proxy-Tabellen wie folgt:
--create proxy table
create existing table myproxy_extractSomething (
column_a int not null,
column_b varchar(20) not null,
_timestamp datetime null,
_errcode char(10) null) external procedure at "loopback.mydb.mylogin.sp_extractSomething"
--calling sp
declare @errcode Char
declare @myTimestamp datetime
set @myTimestamp = getdate()
select *
from myproxy_extractSomething
where _timestamp = @myTimestamp
and _errcode = @errcode
select @errcode
Während die Ergebnismenge erfolgreich zurückgeführt werden kann, @errcode
/_errcode
ist immer Null. Wie kann ich einen Ausgabeparameter in einer Proxy-Tabelle definieren?