存储过程会写吧?
如果会写就简单了,只是不能更新数据,且必须返回一个值。
在用户定义函数那里点右键就可以了
实例如下
CREATE FUNCTION f_GetUserName (@userID int)  
RETURNS varchar(50) AS  
BEGIN 
declare @userName varchar(50)
select  @userName = UserName
from  SysUserBaseInfo
where PKID = @userID if @userName is null
begin
set @userName = ''
end return @userName
END

解决方案 »

  1.   

    CREATE FUNCTION
    创建用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过 EXECUTE 语句执行。用户定义函数用 ALTER FUNCTION 修改,用 DROP FUNCTION 除去。语法
    标量函数CREATE FUNCTION [ owner_name.] function_name
        ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS scalar_return_data_type[ WITH < function_option> [ [,] ...n] ] [ AS ]BEGIN
        function_body
        RETURN scalar_expression
    END
      

  2.   

    CREATE FUNCTION
    创建用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过 EXECUTE 语句执行。用户定义函数用 ALTER FUNCTION 修改,用 DROP FUNCTION 除去。语法
    标量函数CREATE FUNCTION [ owner_name.] function_name
        ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS scalar_return_data_type[ WITH < function_option> [ [,] ...n] ] [ AS ]BEGIN
        function_body
        RETURN scalar_expression
    END内嵌表值函数CREATE FUNCTION [ owner_name.] function_name
        ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS TABLE [ WITH < function_option > [ [,] ...n ] ] [ AS ]RETURN [ ( ] select-stmt [ ) ]多语句表值函数CREATE FUNCTION [ owner_name.] function_name
        ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS @return_variable TABLE < table_type_definition >[ WITH < function_option > [ [,] ...n ] ] [ AS ]BEGIN
        function_body
        RETURN
    END< function_option > ::=
        { ENCRYPTION | SCHEMABINDING }< table_type_definition > ::= 
        ( { column_definition | table_constraint } [ ,...n ] ) 
    参数
      

  3.   

    示例
    A. 计算 ISO 周的标量值用户定义函数
    下例中,用户定义函数 ISOweek 取日期参数并计算 ISO 周数。为了正确计算该函数,必须在调用该函数前唤醒调用 SET DATEFIRST 1。 CREATE FUNCTION ISOweek  (@DATE datetime)
    RETURNS int
    AS
    BEGIN
       DECLARE @ISOweek int
       SET @ISOweek= DATEPART(wk,@DATE)+1
          -DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104')
    --Special cases: Jan 1-3 may belong to the previous year
       IF (@ISOweek=0) 
          SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1 
             AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1
    --Special case: Dec 29-31 may belong to the next year
       IF ((DATEPART(mm,@DATE)=12) AND 
          ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
          SET @ISOweek=1
       RETURN(@ISOweek)
    END下面是函数调用。注意 DATEFIRST 设置为 1。SET DATEFIRST 1
    SELECT master.dbo.ISOweek('12/26/1999') AS 'ISO Week'
    下面是结果集。ISO Week
    ----------------
    52B. 内嵌表值函数
    下例返回内嵌表值函数。USE pubs
    GO
    CREATE FUNCTION SalesByStore (@storeid varchar(30))
    RETURNS TABLE
    AS
    RETURN (SELECT title, qty
          FROM sales s, titles t
          WHERE s.stor_id = @storeid and
          t.title_id = s.title_id)C. 多语句表值函数
    假设有一个表代表如下的层次关系: CREATE TABLE employees (empid nchar(5) PRIMARY KEY, 
          empname nvarchar(50), 
          mgrid nchar(5) REFERENCES employees(empid), 
          title nvarchar(30)
          )表值函数 fn_FindReports(InEmpID) 有一个给定的职员ID,它返回与所有直接或间接向给定职员报告的职员相对应的表。该逻辑无法在单个查询中表现出来,不过可以实现为用户定义函数。 
      

  4.   

    查sql server的联机帮助呀。
      

  5.   

    create function test()
    returns int
    begin
    return 123end
    select dbo.test()
      

  6.   

    CREATE FUNCTION GetMyName(@strName as varchar(30))
    RETURNS varchar
    AS 
    BEGIN RETURN (SELECT YourName=@strName) ENDGOSELECT dbo.GetMyName('Echo')为何会只是显示  E
      

  7.   


    CREATE FUNCTION GetMyName(@strName as varchar(30))
    RETURNS varchar(30)   --没有定义长度,默认为1
    AS 
    BEGIN RETURN (SELECT YourName=@strName) ENDGOSELECT dbo.GetMyName('Echo')
      

  8.   

    在函数调用的时候
    为何前面应该加 dbo.呢
      

  9.   

    这是SQL的规定,函数前必须加所有者。