4

そのデータベースにインストールされている関数に依存するテストデータベースにクエリがあります。その関数を持たず、その関数をインストールできない別のサーバーに対してそのクエリを実行する必要があります。

これに対するエレガントで実用的な解決策はありますか?関数は多くのパラメーターで非常に複雑なので、クエリのセクションを関数としてラベル付けし、クエリの本体からそのコードを呼び出すことができる構文があることを望んでいました。

私はグーグルを試しましたが、残念ながら、ご想像のとおり、関連する単語は関数の作成方法に関する記事につながるだけです。

編集:このためのSQLServer2000の機能に制限されています。

4

3 に答える 3

1

インライン関数を作成することはできませんか? 権限がないため、作成機能が失敗しますか? CTE を代用できる場合があります。

CREATE FUNCTION fn_Test ( @sID nvarchar(30) )
RETURNS table
AS
RETURN (
        SELECT sID, sParID 
        FROM docSVsys 
        WHERE sID = @sID
       )
GO
-- Example of calling the function for a specific region
SELECT *
FROM fn_Test(N'2')
GO
于 2012-08-01T11:58:58.317 に答える
1

現時点での私の最良の答えは自分自身から来ました。処理に必要なデータを #temporary テーブルに保存し、while ループを使用して、#temporary テーブル内の行を更新する必要があるロジックを使用しました。かなり手直ししましたが、うまくいきました。一度実行する操作としては問題ありません。

于 2012-10-03T09:40:48.467 に答える
0

これがMSSQL2000で可能かどうかはわかりませんが、tempdbで関数を作成し、そこから使用できる可能性があります。

2008年にはうまくいくようです。したがって、tempdbでそれを行う権限がある場合、これは機能する可能性があります。

于 2012-08-01T13:12:42.607 に答える