日期:2014-05-18  浏览次数:20580 次

存储过程可以内嵌函数吗?
存储过程可以内嵌函数吗?

类似于下面这样,正确的语法应该怎么写:

CREATE PROCEDURE
AS
BEGIN
  ......

  FUNCTION XYZ(@X NVARCHAR(20))
  AS 
  BEGIN
  ......
  END

  ......

END

------解决方案--------------------
在存储过程里面可以调用自定义函数。

但是为什么要在存储过程里面创建自定义函数呢?
------解决方案--------------------
SQL code
create proc p_test
as
begin
    declare @sql varchar(max)
    set @sql = '
        create function [f_test]()
        returns int as
        begin
            return 1
        end
    '
    exec(@sql)
    select dbo.f_test()
end
go

exec p_test
/*
1
*/

------解决方案--------------------
探讨

SQL code
create proc p_test
as
begin
declare @sql varchar(max)
set @sql = '
create function [f_test]()
returns int as
begin
return 1
end
'
……

------解决方案--------------------
确实没有,要用到函数直接在外键建一个,在存储过程里引用就是了。
------解决方案--------------------
当然可以内嵌函数 不过不如直接调用函数多好??