謝謝兩位﹐請幫我看看下面兩段代號﹐在我看來是一樣的功能﹐卻返回兩個不同的值﹐我找不出原因在哪里~/****第一支代碼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)
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*****/