SQL Server 함수 내부의 newid ()
테이블 값 함수의 반환 값인 쿼리 결과에 가짜 열을 삽입해야합니다. 이 열 데이터 유형은 고유 식별자 여야합니다. (내 생각에 ...) 가장 좋은 방법은 newid()
기능 을 사용하는 것입니다. 문제는 newid()
이 유형의 함수 내에서 사용할 수 없다는 것 입니다.
Invalid use of side-effecting or time-dependent operator in 'newid()' within a function.
다음은 영리한 솔루션입니다.
create view getNewID as select newid() as new_id
create function myfunction ()
returns uniqueidentifier
as begin
return (select new_id from getNewID)
end
내가 인정할 수없는 것. 나는 그것을 여기에서 찾았다 : http://omnibuzz-sql.blogspot.com/2006/07/accessing-non-deterministic-functions.html
-님
NEWID ()를 함수에 매개 변수로 전달할 수 있습니다.
CREATE FUNCTION SOMEIDFUNCTION
(
@NEWID1 as varchar(36), @NEWID2 as varchar(36)
)
RETURNS varchar(18)
AS
BEGIN
-- Do something --
DECLARE @SFID varchar(18)
SELECT @SFID = 'DYN0000000' + LOWER(LEFT(@NEWID1,4)) + LEFT(@NEWID2,4)
RETURN @SFID
END
GO
다음과 같이 함수를 호출하십시오.
SELECT dbo.SOMEIDFUNCTION(NewID(),NewID())
대신 기본값으로 사용
create table test(id uniqueidentifier default newsequentialid(),id2 int)
insert test(id2) values(1)
select * from test
NB 나는 newid () 대신 newsequentialid ()를 사용했습니다. newid ()는 순차적이 아니기 때문에 pagesplits를 유발하므로 여기를 참조하십시오 : Newid와 Newsequentialid의 차이점을 보여주는 간단한 코드
ROW_NUMBER 함수를 사용할 수 있습니다.
SELECT
(ROW_NUMBER () OVER (ORDER BY recordID)) as RowNumber,
recordID,
fieldBla1
FROM tableName
자세한 내용은 http://msdn.microsoft.com/pt-br/library/ms186734.aspx 에서 확인하세요 .
참조 URL : https://stackoverflow.com/questions/772517/newid-inside-sql-server-function
'programing tip' 카테고리의 다른 글
루비 문자열 또는 배열 비교 (0) | 2021.01.11 |
---|---|
숨길 의도가 있다면 새 키워드를 사용 (0) | 2021.01.11 |
CPU 온도를 얻는 방법? (0) | 2021.01.11 |
파이썬 코드를 한 줄에 80 자 미만으로 유지하려면 어떻게해야합니까? (0) | 2021.01.11 |
TinyMCE 경로, editor_plugin.js와 같은 것을로드 할 위치를 지정하는 방법 (0) | 2021.01.11 |