如下函数:
CREATE FUNCTION addNumber
(
@a int,@b int
)
RETURNS int
AS
BEGIN
set @a=@a+@b
RETURN @aENDdeclare @a int,@b int;
set @a=2;
set @b=3;
print dbo.addNumber(@a,@b)
print @a我的想法是让变量@a传入函数执行后,的结果应该变成5而不是保持2不变,是不是还需要什么关键字申明一下@a是个引用类型呢?就象c#的 ref,out关键字一样??
请帮我实现我要的结果,谢谢

解决方案 »

  1.   

    函数里的@a和外面的@a,内存地址是不一样的,是不同的变量。函数里的@a只在函数内部有效。
      

  2.   

    declare @a int,@b int;
    set @a=2;
    set @b=3;
    print dbo.addNumber(@a,@b)
    print @a这个应该是跟C里面的函数差不多吧,你是传值过去的,改变后,不会改变原变量的值。除非传地址,才能在改变函数里变量值的同时,也更改原变量的值
    SQL里面不存在这种内存关系吧?
      

  3.   

    附带问一下sql函数参数类型可以是table吗?
      

  4.   

    应该不支持 table 参数