如何在一個存儲過程內部申明一個函數并在該過程內調用??和过程一样,函数是不建议在过程中建立的!
你只能用:
create proc 名
as
exec('create function 过程名 ......')select dbo.过程名()

解决方案 »

  1.   

    謝謝兩位﹐請幫我看看下面兩段代號﹐在我看來是一樣的功能﹐卻返回兩個不同的值﹐我找不出原因在哪里~/****第一支代碼begin*****/
    create procedure Jelly (@mystring varchar(4),@timepart varchar(2), @num int) as
    begin
       exec('  create function dbo.[myfunc] (@mystring varchar(4),@timepart varchar(2), @num int )
                  returns varchar 
                       as 
                  begin
                        declare @time varchar(4)
                         if @timepart=''hh''
                               set @time=cast(substring(@mystring,1,2)+@num as varchar)+substring(@mystring ,3, 2)
                        return(@time)
                  end')   select  dbo. myfunc(@mystring,@timepart,@num)
       drop function dbo.myfunc
    endexec Jelly '0730', 'hh', 1
    --返回值為8
    /****第一支代碼end*****//****第二支代碼begin*****/
    declare @mystring varchar(4),@timepart varchar(2), @num int
                        declare @time varchar(4)
    set @mystring='0730'
    set @timepart='hh'
    set @num=1
                         if @timepart='hh'
                               set @time=cast(substring(@mystring,1,2)+@num as varchar)+substring(@mystring ,3, 2)
                              
    select @time
    ----返回值為830﹐而這正是我需要的
    /****第二支代碼end*****/