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 的函数,就像 John 和 Jane 的示例一样...

这是我到目前为止所尝试的:

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 (m.title + ' ' + m.firstname + ' ' + m.surname) 
FROM contact c
LEFT JOIN membership m
ON c.contactID=m.contactID

上面的示例使用字符串连接,并在多列的列标题名称下创建一个列,其中人员的标题后跟一个空格,然后是人员的名字,后跟一个空格,然后是姓氏。

您的函数将如下所示:

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 回答