テーブルから行のセットを選択し、これらのうちの1つをランダムに返す関数を作成しようとしています。関数の最初のステップは、適切な行IDを保持するローカル表変数を作成して入力します。テーブルは次のように定義されます。SQL Serverの関数を使用してランダムな行番号を返します。
DECLARE @SuitableID TABLE (
Id INT
)
このテーブルは、任意の数のIDを保持できます。関数は、これらのうちの1つをランダムに返す必要がありますが、それを行う方法を見つけることはできません。私はこの構文が正しいことだと思う
SELECT @ReturnedID = Id
FROM @SuitableID
TABLESAMPLE (1 ROWS)
、しかし:
Invalid use of a side-effecting operator 'newid' within a function.
TAMPLESAMPLEも動作していないよう:
エラーを返しDECLARE @ReturnedID INT
SELECT TOP 1 @ReturnedID = Id
FROM @SuitableID
ORDER BY NEWID()
:私は次のことを試してみました私のデータベースは同意しない。
私は間違っていますが、私はどのように操作したいのですか?
チェックをこの質問:https://stackoverflow.com/questions/772517/newid-inside-sql-server-function –