IF OBJECT_ID ( N'dbo.fnu_GetRandom', N'FN' ) IS NOT NULL
DROP FUNCTION dbo.fnu_GetRandom;
GO
CREATE FUNCTION dbo.fnu_GetRandom(
@min_ int,
@max_ int
)
RETURNS int
AS
BEGIN
declare @rtn int set @rtn = 0
declare @mm int set @mm = @max_ - @min_
SELECT @rtn = RAND()*(10-5)+5;
RETURN @rtn
END
오류 메세지는 다음과 같이 나옵닏.
메시지 443, 수준 16, 상태 1, 프로시저 fnu_GetRandom, 줄 11 [배치 시작 줄 12]
함수 내에서 파생 작업을 생성하는 연산자 'rand'을(를) 잘못 사용했습니다.
Comment 1
-
withSQLServer
2018.08.31 12:12
UDF 즉, 사용자 정의 함수에서는 비결정적 함수인 RAND 또는 NEWID 는 호출할 수 없습니다.
예외적으로 SQL Server 2005 부터 GETDATE() 함수는 비결정적 함수지만 사용 가능합니다.
비결정적 함수에 대한 정보는 아래 링크 참고바랍니다.
https://docs.microsoft.com/ko-kr/sql/relational-databases/user-defined-functions/deterministic-and-nondeterministic-functions?view=sql-server-2017
결론적으로, 원하시는 방법은 편법을 이용하면 가능하게 할 수는 있습니다.
편법은 다양하니 아래 방법은 참고만해주세요.