sql >> データベース >  >> RDS >> Sqlserver

ユーザー定義関数でRAND()を使用する

    問題は、ユーザー定義関数の内部から非決定論的関数を呼び出すことができないことです。

    ビューを作成し、ビュー内でその関数を呼び出し、関数内でそのビューを使用することで、この制限を回避しました。次のようになります......

    ビュー定義

    CREATE VIEW vw_getRANDValue
    AS
    SELECT RAND() AS Value
    

    関数の定義

    ALTER FUNCTION getNumber(@_id int )
    RETURNS DECIMAL(18,4)
    AS
    BEGIN
       DECLARE @RtnValue DECIMAL(18,4);
       SELECT TOP 1 @RtnValue = EmployeeID 
       FROM dbo.Employees
       ORDER BY EmployeeID DESC
    
       SET @RtnValue = (SELECT Value FROM vw_getRANDValue) * @RtnValue * (1.0000/100.0000) --<-- to make sure its not converted to int
        RETURN @RtnValue;
    END
    


    1. Oracleで小文字を含む行を見つける4つの方法

    2. SQLServerデータベースの複数のテーブルの主キー制約の名前を変更する方法-SQLServer/TSQLチュートリアルパート64

    3. SSHトンネルを介した要塞サーバーのPostgreSQLサーバーへの接続

    4. 大規模なMySQLInnoDBテーブルの変更