2010-03-05 3 views

답변

3

나는 스키마 이름을 의미한다고 생각 하는가? 소유자는 그것을 만든 사용자입니다.

이 함수는 내장 함수와 구별됩니다. 내장형 함수 (예 : DATEADD 등)는 데이터베이스 엔진 자체에있는 반면, "시스템"저장 프로 시저 및 함수는 마스터 데이터베이스에 있으므로 검색 할 수 있습니다.

SELECT MyFunction()을 지정하면 데이터베이스 엔진이나 내장 된 함수에 관계없이 데이터베이스 엔진이 작동하기가 더 어려울 것으로 생각됩니다.

+0

감사합니다. Andy! 예 스키마 이름을 의미합니다. 당신이 말한 것은 도움이되지만 전적으로 당신에게 동의하지 않습니다. 왜 우리는 사용자의 저장 프로 시저와 내장 저장 프로 시저를 구별 할 필요가 없습니까? –

+0

저장 프로 시저는 데이터베이스에만 저장되므로 내장되어 있지 않으므로 엔진이 master 데이터베이스와 현재 데이터베이스를 모두 검색 할 수 있습니다. 그래서 sp_something 프로 시저의 이름을 지정하지 않아야합니다. 프로 시저 시작시 SQL이 sp_를 보면 master 데이터베이스를 먼저 검색합니다. –

+0

감사합니다. Andy. 나는 그것을 지금 이해한다. 이안이 말했듯이 우리는 스칼라 함수에 대한 스키마 만 필요합니다. 테이블 - 값 함수의 경우에는 필요하지 않습니다. 이 앤디에 대해 생각해보고 싶습니다. 나와상의하십시오. –

2

사실 이것은 스칼라 값 함수의 경우에만 해당됩니다.

+0

네, 맞아요 이안. 나는 방금 테스트하고 당신이 말한 것을 확인했습니다! 그래서 이것으로부터, "시스템 테이블 - 값 함수는 없다"고 말할 수 있을까요? –

0

위의 Andy와 논의한 후 여기 내 자신의 질문에 대답합니다. 저장 프로 시저가 생성되면 연결의 현재 데이터베이스에 저장됩니다. 그 동안 함수는 데이터베이스 엔진 (스칼라 값 기본 제공)과 연결의 현재 데이터베이스 (사용자 정의 함수)의 두 위치에 저장됩니다. 그래서 사용자 정의 스칼라 값 함수를 호출 할 때 스키마 이름 접두어와 기본 스키마를 구별 할 필요가 있습니다. 다른 유형의 함수와 저장 프로 시저에이 접두어가 필요하지 않습니다.

관련 문제