比如:
use northwind
create function Pay (@u money,@q smallint,@d real )
returns money 
as
begin
    declare @pay money 
    set @pay = @u*@q*(1-@d)
    return @pay
endselect OrderID,ProductID,UnitPrice,Quantity,Discount, dbo.Pay(UnitPrice,Quantity,Discount) as 金额
from [Order Details]

解决方案 »

  1.   

    CREATE FUNCTION LargeOrderShippers ( @FreightParm money )
    RETURNS @OrderShipperTab TABLE
       (
        ShipperID     int,
        ShipperName   nvarchar(80),
        OrderID       int,
        ShippedDate   datetime,
        Freight       money
       )
    AS
    BEGIN
       INSERT @OrderShipperTab
            SELECT S.ShipperID, S.CompanyName,
                   O.OrderID, O.ShippedDate, O.Freight
            FROM Shippers AS S
                 INNER JOIN Orders AS O ON (S.ShipperID = O.ShipVia)
            WHERE O.Freight > @FreightParm
       RETURN
    ENDSELECT *
    FROM LargeOrderShippers( $500 )  --没有加dbo
      

  2.   

    dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。例如,如果用户 Andrew 是固定服务器角色 sysadmin 的成员,并创建表 T1,则表 T1 属于 dbo,并以 dbo.T1 而不是 Andrew.T1 进行限定。相反,如果 Andrew 不是固定服务器角色 sysadmin 的成员,而只是固定数据库角色 db_owner 的成员,并创建表 T1,则 T1 属于 Andrew,并限定为 Andrew.T1。该表属于 Andrew,因为该成员没有将表限定为 dbo.T1。无法删除 dbo 用户,且此用户始终出现在每个数据库中。只有由 sysadmin 固定服务器角色成员(或 dbo 用户)创建的对象才属于 dbo。由任何其他也不是 syadmin 固定服务器角色成员的用户(包括 db_owner 固定数据库角色成员)创建的对象: 
    属于创建该对象的用户,而不是 dbo。
    用创建该对象的用户名限定。