4

次のように定義した関数から単純な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を行ったが失敗した顧客タイプの顧客を返すことになっています

4

1 に答える 1

10

関数の構文を次のように変更します。

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 を参照してください

関数は次のように書くこともできます(@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 を参照してください

于 2013-02-21T17:06:57.347 に答える