programing

newidsql server 함수 내부

iphone6s 2023. 7. 6. 21:57
반응형

newidsql server 함수 내부

쿼리 결과에 테이블 값 함수의 반환 값인 가짜 열을 삽입해야 합니다.이 열 데이터 유형은 고유 식별자여야 합니다.가장 좋은 방법은 사용하는 것입니다.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

newid()가 순차적이지 않기 때문에 페이지 분할이 발생하기 때문에 newid() 대신 newsequentialid()를 사용했습니다. 여기를 참조하십시오. newid와 newsequentialid의 차이를 보여주는 일부 단순 코드

ROW_NUMBER 함수를 사용할 수 있습니다.

선택한다.
(Row_Number() Over(기록ID)) 행 번호로,
레코드 ID,
필드Bla1
시작 테이블 이름

자세한 내용은 http://msdn.microsoft.com/pt-br/library/ms186734.aspx 에서 확인하십시오.

언급URL : https://stackoverflow.com/questions/772517/newid-inside-sql-server-function

반응형