私はこれをどのようにフレーズするかについてはあまりよく分かりません。ここに問題があります:T-SQL関数または実行可能な代替の動的openrowset?
私はいくつかのデータを取得するために別のシステム(AS400)に参加する必要がある1-nの項目があります。私はopenrowset
、例えば外where
基準を指定した場合
openrowset
は永遠に取る:
select * from openrowset('my connection string', 'select code, myfield from myTable')
where code = @code
私の考えでは、アイテム数に取り、にそれを注入する動的SQLを使用する関数を作成することでしたopenrowset
文字列、ラ:
declare @cmd varchar(1000)
set @cmd = 'select * from openrowset('my connection string',
''select code, myfield from myTable where code = ' + @code + ''')'
どうやら私は、関数の内部でinsert.. exec..
戦略を使用することはできません。これを達成するためのより良い方法はありますか?私はcross apply
を使って外部データを必要とするジョインでこれを使用しようとしていました。
私はtvf
とcross apply
と結婚していませんが、このデータをすばやく取得する方法が必要です。助けてくれてありがとう。
私はこれを行うための唯一の方法は、(あなたが何をし始めていたとして)、動的SQLを使用して既存のテーブルに挿入するストアドプロシージャにあなたの機能を変更することだと思います。次に、クエリは、そのテーブルの検索された内容と結合することができます。 – RBarryYoung