Ich bin mir nicht sicher, wie ich das ausdrücken soll. Hier ist das Problem:Dynamisches Openrowset in T-Sql Funktion oder praktikable Alternative?
Ich habe 1-n Elemente, die ich zu einem anderen System (AS400) verbinden muss, um einige Daten zu erhalten.
Die openrowset
dauert ewig, wenn ich die where
Kriterien außerhalb der openrowset
angeben, zum Beispiel:
select * from openrowset('my connection string', 'select code, myfield from myTable')
where code = @code
Meine Idee, eine Funktion zu erstellen war, die in der Artikelnummer nimmt und verwendet dynamische SQL es in die zu injizieren openrowset
string, a la:
declare @cmd varchar(1000)
set @cmd = 'select * from openrowset('my connection string',
''select code, myfield from myTable where code = ' + @code + ''')'
Anscheinend kann ich nicht in das Innere einer Funktion insert.. exec..
Strategie verwenden. Gibt es einen besseren Weg, dies zu erreichen? Ich würde dies in Joins verwenden, wo ich die externen Daten mit cross apply
brauchte.
Ich bin nicht verheiratet mit tvf
und cross apply
, aber ich brauche eine Methode, um diese Daten schnell zu bekommen. Danke für jede Hilfe.
Ich denke, der einzige Weg, dies zu tun wäre, um Ihre Funktion auf eine gespeicherte Prozedur zu ändern, die eine bereits bestehende Tabelle einfügt in dynamische SQL verwenden (wie Ihre zu tun, wurden ausgehend). Dann könnten Sie Abfragen mit den abgerufenen contants dieser Tabelle verbinden. – RBarryYoung