如何让自定义函数只执行一次?我用的是SQL SERVER 2005下面的语句中的DBO.MixABCD()是一个自定义函数, 这个语句运行通过, 但是现在问题是, 函数出现四次, 四次返回的值都不一样, 因为我的函数的功能就是随机生成一个字符串并返回, 问: 
我如何让函数只执行一次, 返回的值用在这四个位置? 
注意:由于某种原因,我只想用一条SELECT语句或组合成一个语句的SELECT语句完成,其它非SELECT语句,如设置性的,可以加几条都成.特别是不想先把函数返回值存入一个变量再把这变量用在下面的命令中,有其它办法么?SELECT substring(DBO.MixABCD(),1,1),substring(DBO.MixABCD(),2,1),substring(DBO.MixABCD(),3,1),substring(DBO.MixABCD(),4,1)

解决方案 »

  1.   

    void Method()
    {
        static count = 0;
        count++;
        if (count > 1) return;
        //你的代码
    }
      

  2.   

    SELECT substring(t0 ,1,1),substring(t0 ,2,1),substring(t0 ,3,1),substring(t0 ,4,1)
    from (select DBO.MixABCD() as t0 )t
      

  3.   

    最容易理解的是,先把函数结果放一变量中,然后四次访问统一变量。declare @s nvarchar(8000)
     select @s=dbo.MixABCD()
     
    SELECT substring(@s,1,1),substring(@s,2,1),substring(@s,3,1),substring(@s,4,1)