1

Ich muss einen SSRS-Bericht erstellen, der Abfrageergebnisse aus einer SQL Azure-Tabelle anzeigt. Eine meiner where-Bedingungen wird jedoch nach Daten suchen, die aus einer Ergebnismenge einer gespeicherten Prozedur (exec team param1, param2) extrahiert wurden. Der Komplikation hinzugefügt wird, dass die gespeicherte Prozedur eine temporäre Tabelle (tempteam) erstellt, um die Ergebnisse zu speichern. Wie kann ich eine Abfrage für die Daten schreiben, die ich benötige, die den Inhalt tempteam in meiner WHERE-Klausel angibt?Erstellen Sie ein SSRS-Dataset, das Abfragen für Daten abhängig von Ergebnissen aus einer gespeicherten Prozedur erstellt, die eine temporäre Tabelle erstellt, um Ergebnisse zu speichern?

Beispielcode

exec team 9596, 2 

select * from tempteam 

Tempteam Probe ergibt

 consid 
     9596 
     23456 
     24354 
     20965 
     .... 
     .... 
     .... 

Antwort

2

kann nicht nur Sie die "TEMP" Tabelle in der Abfrage WHERE Klausel Ihrer verwenden?

SELECT * 
FROM SOME_TABLE 
WHERE ID IN (SELECT consid FROM tempteam) 

Ich glaube nicht, dass die „TEMP“ Tabelle, da es einen Hashtag (#tempteam) vor ihm nicht eigentlich eine normale SQL temporäre Tabelle ist - es sieht aus wie eine tatsächliche Tabelle in einer gespeicherte ist Datenbank.

+0

Du hast Recht. Es ist nicht technisch Temp-Tabelle. Die Daten in der Tabelle ändern sich jedoch jedes Mal, wenn der Proc aufgerufen wird. Also müsste ich den proc in die SSRS-Datensätze einbinden. – acecabana

+0

Was ich getan habe, ist die Abfrage, wie Sie gesagt haben. Da dieser Bericht für mich verwendet wird, führe ich die gespeicherte Prozedur manuell aus, um die Tabelle mit den Daten zu füllen, die ich für die Abfrage benötige, um die benötigten Daten zurückzugeben. – acecabana

1

Dies ist eine Option, die Sie verwenden können:

EXEC('EXEC team 9596, 2; select * from tempteam') 

oder zu parametrieren:

EXEC('EXEC team ' + @p1 + ',' + @p2 + '; select * from tempteam') 

Voll Repro:

create table test(f1 varchar(256) null) 
go 
create proc sp_test(@p varchar(256) = 'Hello ') 
as 
    insert test 
    select @p 
    return 1 
go 

declare @p varchar(256) = 'World' 

EXEC('EXEC sp_test @p = ''Hello ''; select * from test') 
EXEC('EXEC sp_test @p = ' + @p + '; select * from test') 

drop proc sp_test 
go 
drop table test 
go