从自定义T-SQL函数返回Varchar

时间:2013-02-21 16:59:03

标签: sql sql-server tsql function

我想从我定义的函数返回一个简单的varchar值:

CREATE FUNCTION getCustomerType (@orderNumber INT)
    RETURNS VARCHAR(30)
AS
Return 
    (
    select custtype from Customer c 
        join order o on o.customerid =  c.customerid
    where o.orderNumber = @orderNumber 
 )
GO

select getCustType(1063609) 

应该返回订单#1063609的客户类型但未通过

1 个答案:

答案 0 :(得分:7)

我会将函数的语法改为:

CREATE FUNCTION dbo.getCustomerType (@orderNumber INT)
    RETURNS VARCHAR(30)
AS
begin
  declare @custtype varchar(30)
  SET @custtype = (select custtype 
                      from dbo.Customer c 
                      join dbo.[order] o 
                        on o.customerid =  c.customerid
                      where o.orderNumber = @orderNumber)

  return @custtype
end 

然后,当您使用架构(下面的dbo.)调用该函数时,您将使用:

select dbo.getCustomerType(10636909)

请参阅SQL Fiddle with Demo

该函数也可以写成(感谢@MartinSmith):

CREATE FUNCTION getCustomerType (@orderNumber INT)
    RETURNS VARCHAR(30)
AS
begin
  return (select custtype 
                      from dbo.Customer c 
                      join dbo.[order] o 
                        on o.customerid =  c.customerid
                      where o.orderNumber = @orderNumber)
end 

请参阅SQL Fiddle with Demo