test db를 만들려다 보니 무작위 값이 여러 개 들어가는 테이블이 필요하게 되었다.
그래서 간단하게 rand()를 사용했는데 전부 똑같은 값이 들어가기에 초기화가 필요하게 되었다.
함수 사용법이 비슷한 asp에서는 randomize를 사용하면 초기화가 이루어져서
다시 무작위 값이 나오게 된다.
하지만 mssql에서는 그런 게 없다.
여기저기 뒤지다 참고에 연결해 놓은 글을 발견했다.
딱 내가 찾던 것인데, 마지막 해결법에 오류가 있어서 그 부분만 수정한다.
1. 일단 난수를 리턴하는 뷰를 생성합니다.
CREATE VIEW dbo.rand_view
AS
SELECT RAND() AS random_num
2. 1에서 만든 뷰를 사용자정의 함수에서 사용
CREATE FUNCTION dbo.rndNum(@i INT)
RETURNS INT
AS
BEGIN
DECLARE @result INT;
SELECT @result = CONVERT(INT, RAND() * @i)
FROM dbo.rand_view;
RETURN(@result);
END
3. 위에서 만든 사용자정의 함수를 쿼리문에 사용
SELECT a, b, c, dbo.rndNum(5) AS random_num
FROM table_name
위의 빨간 부분이 오류이다.
아래와 같이 하면 오류가 없다.
1. 일단 난수를 리턴하는 뷰를 생성합니다.
CREATE VIEW dbo.rand_view
AS
SELECT RAND() AS random_num
2. 1에서 만든 뷰를 사용자정의 함수에서 사용
CREATE FUNCTION dbo.rndNum(@i INT)
RETURNS INT
AS
BEGIN
DECLARE @result INT;
SELECT @result = CONVERT(INT, random_num*@i)
FROM dbo.rand_view;
RETURN(@result);
END
3. 위에서 만든 사용자정의 함수를 쿼리문에 사용
SELECT a, b, c, dbo.rndNum(5) AS random_num
FROM table_name
'쓸만한 주저리' 카테고리의 다른 글
자바스크립트로 Shooting Game 만들기 (0) | 2009.04.02 |
---|---|
자바스크립트 바둑판 (0) | 2009.04.01 |
우리은행 인터넷 뱅킹 수수료 인상 (0) | 2009.03.09 |
html에서 사용하는 특수문자 모음 (0) | 2009.03.05 |
은행을 이용할 때 수수료 안 내는 법 (0) | 2009.02.26 |