2

データベースをクエリする関数を書きたいと思います:

SELECT m.title, m.firstname, m.surname 
FROM contact c
LEFT JOIN membership m
ON c.contactID=m.contactID

上記のクエリから多くの連絡先が返される可能性があることがわかります。グローバルに使用できるように、結果を関数内の変数に返したいと思います。

関数の結果を次のように表示したい:

Mr John Test
Mrs Jane Smith

ジョンとジェーンの例のように @MemberNames を返す関数を書きたい...

これは私がこれまでに試みたことです:

CREATE FUNCTION fnGetMemberNames 
    (   
    @membershipID int,    
    )
RETURNS int
AS

BEGIN
-- Declare the return variable here
DECLARE @MemberNames varchar(300)

SELECT m.title, m.firstname, m.surname 
FROM contact c
LEFT JOIN membership m
ON c.contactID=m.contactID
WHERE membershipID=@membershipID

RETURN @MemberNames

END
4

2 に答える 2

3

select ステートメントを次のように変更してから、この値を返す関数を作成する必要があります。

SELECT (m.title + ' ' + m.firstname + ' ' + m.surname) 
FROM contact c
LEFT JOIN membership m
ON c.contactID=m.contactID

上記の例では、文字列連結を使用して、複数の列から列見出し Name の下に 1 つの列を作成します。名前の後にスペースが続き、名前の後にスペースが続き、姓が続きます。

関数は次のようになります。

CREATE FUNCTION your_function (@ID INT)
RETURNS VARCHAR(50)
BEGIN
  DECLARE @name_to_return AS VARCHAR(50);
  SELECT  @name_to_return =
             (m.title + ' ' + m.firstname + ' ' + m.surname) 
  FROM contact c
  LEFT JOIN membership m
    ON c.contactID=@ID;
  RETURN @name_to_return ;
END;
于 2013-06-13T21:31:16.113 に答える
2

@ 変数が @user ディレクティブとして解釈されていたため、これを答えにします...

@PriceCheaperton -- Azzi が書いた内容を参照してください:
戻り変数を値に等しく設定する必要があります。現在、空の varchar として宣言しているだけです。

SELECT @MemberNames = (m.title + ' ' + m.firstname + ' ' + m.surname) FROM 
// the rest of your query here

...アジが言ったように。

于 2013-06-13T21:54:51.850 に答える