我想写一个查询数据库的函数:
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
答案 0 :(得分:3)
您必须按如下所示更改select语句,然后创建一个返回此值的函数:
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;
答案 1 :(得分:2)
这是一个答案,因为@变量被解释为@user指令......
@PriceCheaperton - 看看Azzi写的:
您需要将返回变量设置为等于值。现在你只是将它声明为一个空的varchar。
SELECT @MemberNames = (m.title + ' ' + m.firstname + ' ' + m.surname) FROM
// the rest of your query here
......就像Azzi说的那样。