함수에서 변수를 연결할 수 없습니다.

제임스 발렌틴

SQL Server 2008 R2에서 실행 중입니다. 주소의 일부를 연결하고 화면에 표시 할 형식화 된 결과를 반환하는 스칼라 함수를 작성하고 싶습니다. 하지만 내가 돌려받는 것은 @Address 변수뿐입니다. 도시, 주, 우편 번호, 국가는 값에 추가되지 않습니다. 이것은 간단해야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

이것은 내 스칼라 함수입니다.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
;

ALTER FUNCTION [dbo].[fnScreenAddress] (@Id INT)
RETURNS VARCHAR(50)
WITH EXECUTE AS CALLER
AS
BEGIN
    DECLARE @ScreenAddress VARCHAR(50), -- The return value
            @Address VARCHAR(64),
            @UnitNumber VARCHAR(16),
            @City VARCHAR(50),
            @State CHAR(2),
            @PostalCode VARCHAR(16),
            @CountryCode VARCHAR(16);

    SELECT  
        @Address = [Address],
        @UnitNumber = ISNULL([UnitNumber], ''),
        @City = [City],
        @State = [State],
        @PostalCode = [PostalCode],
        @CountryCode = ISNULL([CountryCode], '')
    FROM    
        [dbo].[LPAddress]
    WHERE   
        [ID] = @Id;

    SET @ScreenAddress = @Address;

    IF @City <> ''
    BEGIN
        SET @ScreenAddress = @ScreenAddress + ', ';
    END;

    SET @ScreenAddress = @ScreenAddress + @City;

    IF @State <> ''
    BEGIN
        SET @ScreenAddress = @ScreenAddress + ', ';
    END;

    SET @ScreenAddress = @ScreenAddress + @State;
    SET @ScreenAddress = @ScreenAddress + @PostalCode;
    SET @ScreenAddress = @ScreenAddress + @CountryCode;
    SET @ScreenAddress = LTRIM(RTRIM(@ScreenAddress));

    RETURN(@ScreenAddress);
END;

이를 테스트하기 위해 쿼리 창에 다음 명령을 입력합니다.

select 
    id, address, city, state, postalcode, countrycode, 
    dbo.fnScreenAddress(id) as [ScreenAddress]
from 
    lpaddress;

그리고이 결과 세트를 얻습니다.

여기에 이미지 설명 입력

엠 알리

훨씬 더 간단한 버전은 다음과 같습니다 .....

ALTER FUNCTION [dbo].[fnScreenAddress]
(
    @Id                 INT
)
RETURNS VARCHAR(4000)
WITH EXECUTE AS CALLER
AS
BEGIN
        DECLARE @ScreenAddress VARCHAR(4000); -- The return value

SELECT  @ScreenAddress = 
    STUFF(  
        ISNULL( ', ' + NULLIF([Address]    , '')  , '')
      + ISNULL( ', ' + NULLIF([UnitNumber] , '')  , '')
      + ISNULL( ', ' + NULLIF([City]       , '')  , '')
      + ISNULL( ', ' + NULLIF([State]      , '')  , '')
      + ISNULL( ', ' + NULLIF([PostalCode] , '')  , '')
      + ISNULL( ', ' + NULLIF([CountryCode], '')  , '') , 1,2,'')
FROM    [dbo].[LPAddress]
WHERE   [ID] = @Id

        RETURN @ScreenAddress;
END;

중요 사항

이 목적으로 Scalar 함수를 사용하지 않을 것입니다. Scalar 함수는 성능을 저하시키는 요소이며 특히이 특정 경우에는 함수가 선택한 행이 반환되는만큼 여러 번 호출됩니다. 더 나은 성능을 얻으려면 선택 쿼리에 함수 코드를 추가하기 만하면됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

jquery에서 변수를 연결할 수 없습니다.

분류에서Dev

jquery에서 변수를 연결할 수 없습니다.

분류에서Dev

Firebase 함수에서 MongoDB에 연결할 수 없습니다.

분류에서Dev

Azure 함수에서 Azure SQL에 연결할 수 없습니다.

분류에서Dev

TextField를 IBOutlet 변수에 연결할 수 없습니다.

분류에서Dev

함수에서 변수를 에코 할 수 없습니다.

분류에서Dev

함수 결과를 변수에 할당 할 수 없습니다.

분류에서Dev

함수에서 변수를 사용할 수 없습니다.

분류에서Dev

다른 함수의 함수에서 변수를 사용할 수 없습니다.

분류에서Dev

http를 통해 함수 앱에서 Azure VM에 연결할 수 없습니다.

분류에서Dev

변수를 SQL 쿼리와 연결할 수 없습니다.

분류에서Dev

어셈블리에서 C ++ 함수를 연결할 수 없습니다.

분류에서Dev

postgres에 연결할 수 없습니다

분류에서Dev

Steam에 연결할 수 없습니다

분류에서Dev

Skype에 연결할 수 없습니다.

분류에서Dev

BFD에 연결할 수 없습니다.

분류에서Dev

URL에 연결할 수 없습니다.

분류에서Dev

192.168.1.1에 연결할 수 없습니다.

분류에서Dev

PPPOE에 연결할 수 없습니다.

분류에서Dev

Websocket에 연결할 수 없습니다.

분류에서Dev

sparkSQL에 연결할 수 없습니다.

분류에서Dev

angularjs의 서비스 함수와 연결할 수 없습니다.

분류에서Dev

FXCM 연결 오류-서버에 연결할 수 없습니다.

분류에서Dev

연결된 서버에 연결할 수 없습니다.

분류에서Dev

함수 앱에 연결할 수 없습니다.

분류에서Dev

함수 내에서 전역 변수를 수정할 수 없습니다.

분류에서Dev

onClick 함수에서 변수를 인수로 전달할 수 없습니다.

분류에서Dev

Matlab cmex 함수에서 dll을 mexfunction에 연결할 수 없습니다.

분류에서Dev

LD_PRELOAD로 ncurses 함수를 연결할 수 없습니다.

Related 관련 기사

  1. 1

    jquery에서 변수를 연결할 수 없습니다.

  2. 2

    jquery에서 변수를 연결할 수 없습니다.

  3. 3

    Firebase 함수에서 MongoDB에 연결할 수 없습니다.

  4. 4

    Azure 함수에서 Azure SQL에 연결할 수 없습니다.

  5. 5

    TextField를 IBOutlet 변수에 연결할 수 없습니다.

  6. 6

    함수에서 변수를 에코 할 수 없습니다.

  7. 7

    함수 결과를 변수에 할당 할 수 없습니다.

  8. 8

    함수에서 변수를 사용할 수 없습니다.

  9. 9

    다른 함수의 함수에서 변수를 사용할 수 없습니다.

  10. 10

    http를 통해 함수 앱에서 Azure VM에 연결할 수 없습니다.

  11. 11

    변수를 SQL 쿼리와 연결할 수 없습니다.

  12. 12

    어셈블리에서 C ++ 함수를 연결할 수 없습니다.

  13. 13

    postgres에 연결할 수 없습니다

  14. 14

    Steam에 연결할 수 없습니다

  15. 15

    Skype에 연결할 수 없습니다.

  16. 16

    BFD에 연결할 수 없습니다.

  17. 17

    URL에 연결할 수 없습니다.

  18. 18

    192.168.1.1에 연결할 수 없습니다.

  19. 19

    PPPOE에 연결할 수 없습니다.

  20. 20

    Websocket에 연결할 수 없습니다.

  21. 21

    sparkSQL에 연결할 수 없습니다.

  22. 22

    angularjs의 서비스 함수와 연결할 수 없습니다.

  23. 23

    FXCM 연결 오류-서버에 연결할 수 없습니다.

  24. 24

    연결된 서버에 연결할 수 없습니다.

  25. 25

    함수 앱에 연결할 수 없습니다.

  26. 26

    함수 내에서 전역 변수를 수정할 수 없습니다.

  27. 27

    onClick 함수에서 변수를 인수로 전달할 수 없습니다.

  28. 28

    Matlab cmex 함수에서 dll을 mexfunction에 연결할 수 없습니다.

  29. 29

    LD_PRELOAD로 ncurses 함수를 연결할 수 없습니다.

뜨겁다태그

보관