当然可以的SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GOALTER  function aaa(@a varchar(100))
returns varchar(32)as
begin
declare @bbb varchar(32)

exec XXXX @a,@bbb output
return @bbb
endGO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

解决方案 »

  1.   

    to:2楼,不可以的,执行的时候会提示:服务器: 消息 557,级别 16,状态 2,过程 aaa,行 9
    只有函数和扩展存储过程才能从函数内部执行。
      

  2.   

    store prodedure 調用function我作過,可以!
    function調用沒用過,關注結果!
      

  3.   

    不行的,看SQL SERVER的帮助,函数中写语句限制比较多!
      

  4.   

    --如果你的存储过程没有参数,而且返回的是表集,可以这样在函数中调用:select * from openrowset('sqloledb','Trusted_Connection=yes;database=函数所在的库名','exec 存储过程名')
      

  5.   

    否则的话,是不能的
    未在下面的列表中列出的语句不能用在函数主体中。 赋值语句。
    控制流语句。
    DECLARE 语句,该语句定义函数局部的数据变量和游标。
    SELECT 语句,该语句包含带有表达式的选择列表,其中的表达式将值赋予函数的局部变量。
    游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。只允许使用以 INTO 子句向局部变量赋值的 FETCH 语句;不允许使用将数据返回到客户端的 FETCH 语句。
    INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部 table 变量。
    EXECUTE 语句调用扩展存储过程。
      

  6.   

    主要是SQLSERVER 中 select 语句不能使用存储过程啊!
    谁有办法!?